Reverse基础(四)

学习IDA的使用,寻找flag之旅

  1. first blood_reverse_1
    拉入查壳工具可以看到64位,拖入IDA
    在这里插入图片描述从字符串入手,找到形式神似flag的一串字符,双击进入汇编页面
    在这里插入图片描述找到该字符串地址,双击进入包含它的函数
    在这里插入图片描述F5反汇编,查看伪代码
    在这里插入图片描述即可得到flag为{hello world}
  2. reverse_2
    查壳发现是64位,拖入IDA,找到main函数,反汇编得到如下伪代码
    在这里插入图片描述flag中有几个字符会被替换形成正确的flag,然而,,,空悲切!
  3. reverse_3
    32位未加壳
    在这里插入图片描述
    发现main函数,双击进入,反汇编
    在这里插入图片描述flag肯定就在这,奈何C和python不扎实,空悲切!
  4. Mysterious
    32位无壳,这个拖入IDA后,既没main函数,在字符串里也找不到与flag相关的语句,就没什么头绪了

base64编解码原理

  1. base64是什么?
    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
  2. base64编码原理
    (1)将给定的字符串按相应的转码表转换成对应的字符编码
    (2)将获得该字符编码转换成二进制码
    (3)对获得的二进制码进行分组操作
    第一步:由高到低每3个字节(8位二进制)分为一组,一共24个二进制位
    第二步:将这个24个二进制位分成4组,每个组有6个二进制位
    第三步:在每个组前面加两个0,这样每个组就又变成了8位,即每个组一个字节,4个组就是4个字节了
    第四步:在Base64的转码表找到每个字节对应的符号,这个符号就是Base64的编码值
    字节不足3位时,处理方法如下:
    (a)两个字节时,将这二个字节的一共16个二进制位按照上面的规则,转成三组,最后一组除了前面加两个0以外,后面也要加两个0。这样得到一个三位的Base64编码值,再在末尾补上一个“=”号。
    (b)一个字节时:将这一个字节的8个二进制位,按照上面的规则转成两组,最后一组除了前面加二个0以外,后面再加4个0。这样得到一个二位的Base64编码值,再在末尾补上两个“=”号。
  3. base64解码原理
    解码原理就是编码原理的逆过程
    (1)将给定的字符串按Base64的转码表转换成对应的字符编码,如果
    (2)将获得该字符编码转换成二进制码
    (3)对获得的二进制码进行分组操作
    第一步:由高到低位每4个字节分为一组,一共32个字节
    第二步:将这个32个二进制位分成4组,每个组有8个二进制位
    第三步:删去每个组前面的两个0,这样每个组就变成了6位,合并之后是24个二进制位,分成三个组,即每个组一个字节,形成3个字节
    第四步:在相应的转码表找到每个字节对应的符号,这个符号就是未编码的值
    字节不足4位,即base64编码值末尾含“=”号时,处理方法如下:
    (a)字节为3位时,将24个二进制位按上面的规则,分成3组,前两组删去每个组前面的两个0,最后一组除删去前两个0外,同时删去末尾两个0,合并之后再分成两组,每组一个字节,形成两个字节
    (b)字节为2位时,将16个二进制位按上面的规则,分成2组,第一组删去前面的两个0,第二组除删去前两个0外,同时删去末尾4个0,合并之后形成一个字节
  4. python实现base64编码
def base(string)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值