攻防世界testre做法(考点:base58)

在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。

base64编码原理:1,在使用base64加密前,通常会定义一个数组,数组内容大致为A~Z,a~z,0~9,以及字符/+=   2,将待转换的字符串每三个字节分为一个组,三个字节,即24个二进制数,此时再每6个二进制数分为一组,然后再在每组的首位添加上两个0,这样一组就变成8位了,也就是一个字节   3,最后根据base64编码对照表,获得相对应的值    这边就先不拓展两个字节和一个字节的情况了

如何根据代码判断是否是base64编码呢?首先,我们看代码中有没有定义字符串或者数组,其中包含0~9,A~Z,a~z,像这样的,可以直接预判这是base64编码了,然后再看代码中有没有>>8和<<6,若是有,也可以这么猜了。

base58编码原理:基本原理同base64差不多,只是少了+=/字符,例如1234的base58编码,先是对1234/58得到结果为21,模16,再是用21/58,得到结果0,模21,最后,对照base58的编码表,将21和16在表中先后对应起来,就得到两个字符,两个字符就是1234的base58编码

如何根据代码判断是否是base58编码呢?也是先看有没有数组的定义,再看有没有>>8  <<6以及log数,又或者是%58这种关键字样,直接大胆猜测啊,好了,来做题

首先,查壳,64bit,丢进ida64中,然后进入main函数,发现其中有两个函数直接进入下面这个函数大胆猜测这是base58加密这些字符集为base58编码后的结果,连接起来,注意字符串连接的先后顺序,仔细看,要分清连接的先后顺序,最后放到base58解密的网站上去解密就得到flag了

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 19:30:03       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 19:30:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 19:30:03       4 阅读
  4. Python语言-面向对象

    2024-06-07 19:30:03       4 阅读

热门阅读

  1. 重新学习stm32(序)stm32简介

    2024-06-07 19:30:03       12 阅读
  2. Redux 入门+面试题

    2024-06-07 19:30:03       16 阅读
  3. openfeign服务相互调用碰到问题总结

    2024-06-07 19:30:03       15 阅读
  4. python生成器

    2024-06-07 19:30:03       11 阅读
  5. Windows11+Ubuntu24.04双系统安装及配置

    2024-06-07 19:30:03       14 阅读
  6. Ubuntu 22.04 搭建 KubeSphere 3.4.1 集群

    2024-06-07 19:30:03       15 阅读
  7. 云原生架构相关技术_2.云原生微服务

    2024-06-07 19:30:03       15 阅读
  8. 深入理解 MySQL 中的 SQL_NO_CACHE 关键字

    2024-06-07 19:30:03       20 阅读
  9. Ajax入门

    2024-06-07 19:30:03       17 阅读
  10. LeetCode hot100-61-G

    2024-06-07 19:30:03       17 阅读
  11. 汽车电子电器架构深入分析

    2024-06-07 19:30:03       12 阅读