一.reverse2
附件下载下来,丢到exeinfope看一眼
64位,未加壳
丢ida64里
有一些很像flag的东西,提交但不对,进一步看一下使用这些字符串的函数
反编译一下
注意这里
遍历flag,将flag中的i和r替换成1
双击变量flag,找一下原始flag是什么
和我们一开始猜测的差不多,将i和r替换成1即可
flag{hack1ng_fo1_fun}
二.内涵的软件
下载下来发现是一个可执行的exe文件,我们先在cmd里运行一下
好吧,还是要逆向
32位,且无壳
继续ida32打开
shift+f12查看所有字符串
这一串这么像flag的东西,提交一下,果然是flag
本着刨根问底的原则,我们继续看一眼主函数
v3的值应该就是程序员忘记写的变量了
flag{49d3c93df25caad81232130f3d2ebfad}
三.xor
下载下来不知道是个啥玩意,exeinfope看一下
应该是个mac的64位可执行程序
放到ida64看一下
看一下主函数
这伪代码审的我真头大
大概意思应该是,用户需要输入一个长度为33的字符串,从第二个字符开始,字符与前一个字符进行异或操作,然后与变量global进行对比,一样即输出成功
明显global的值就是异或后的flag,因为两次异或数据会复原,所以我们可以对global的值进行异或操作,双击success看一下最终的值
shift+e取出字符串
编写脚本对最终数据进行异或操作复原数据
sum = [0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
0x47, 0x32, 0x4F, 0x00]
flag = chr(0x66)
for i in range(1,33):
flag += chr(sum[i] ^ sum[i-1])
print(flag)
简单解释一下这串代码,sum数组包含的是源程序的最终数据,定义一个变量flag,并初始化flag的值为f,因为源代码是从第二个字符开始执行异或操作,所以这里flag的值初始化为f
使用for循环进行32次迭代,对sum数组中相邻的两个数进行异或操作,并将结果追加到flag的值中
flag{QianQiuWanDai_YiTongJiangHu}