第八题reverse3
查壳
32位文件,无壳,用32位IDA打开
检索字符串
可能有base64加密,另外我们注意到“right flag”这个字符串,交叉引用找到主函数,查看伪代码
分析伪代码可知,如果str2与Destination相等则输出flag正确,而Destinantion与v4的值相等,v4的值由函数sub_4110BE对v3、v14、str作用得来,所以要分析这个函数的作用。
双击sub_4110BE查看
与base64的相似,可以判断该函数的作用是base64加密。
查看str2的值
接下来就可以写一个脚本,带入str2的值进行base64解密从而逆推出flag
import base64
str2 = "e3nifIH9b_C@n@dH"
flag = ""
le = len(str2)
for i in range(0, le):
flag += chr(ord(str2[i]) - i)
print(base64.b64decode(flag))
解得flag为{i_l0ve_you}
第九题 不一样的flag
查壳
32位文件,无壳,用32位IDA打开。
检索字符串
其中有一个字符串“.rdata:0040306C 00000026 C \nok, the order you enter is the flag!”。可能位于flag所在的函数,对其交叉引用并查看伪代码。
分析伪代码:将v3赋值为“*11110100001010000101111#”。将接收的值赋给v5,while循环嵌套if,根据v5的值进行不同操作。
重点是v3的值,这样的字符串很像迷宫题,字符串一共有25个字符,则应该是5X5的排列方式,在文本文档里排一下序,可以得到一个类似迷宫的结构。
其中0代表路径,1代表墙壁,从*出发沿路径走到#。
我们运行一下原程序。
上下左右四种操作都有对应的数字,联系迷宫可以得出一串数字222441144222,则flag就是 222441144222。