key-wp

这道题让我大体懂得了逆向 7分分析3分猜的可怕之处。


0x00

​ 首先 exeinfope.exe 分析并没有加壳,直接放到 ida 里直接蒙掉(ida自己的原因,一开始字符串都分析不出来,有时候 ida 会发疯)。最后确定了主函数 sub_401100(),如下:

image-20221031211319400

​ 追踪这个 v10 ,发现 sub_4020c0 函数:

image-20221031211503059

​ 猜测 sub_4020c0 是字符串比较函数,比较的结果放到 v10 中。跟进 sub_4020c0,有:

image-20221031214220924

​ 主体就是 a4 与 this 的字符串比较,其中 a4 对应 v9, this 对应 v28。但是 v28 追踪是 0(很迷), v9 追踪是 Block。

0x01

​ 我们先追踪Block,有:

image-20221031214916192

​ 追踪 sub_4021E0 函数:

image-20221031215151286

​ 猜测sub_4021E0 就是针对每一个 this[i],返回 this[i] = a3。

0x02

​ 0x00 中写了v28 追踪是 0,所以从另一个角度来入手。我们发现了 “flag.txt” 所在的函数:

image-20221031221707337

image-20221031221751149

image-20221031222053233

​ 之后不知道咋整了,不知道怎么把 v25 和 v28 联系起来。。(其实看完 wp 之后,感觉这俩应该是一个值。

0x03-wp1

​ 总结,读出 flag.txt 的内容,并与 Block 作比较。脚本如下:

1
2
3
4
5
6
7
8
9
10
block = "themidathemidathemida"
v33 = ">----++++....<<<<."
v26 = ""
flag = ""
for i in range(18):
v26 += chr((ord(block[i]) ^ ord(v33[i])) + 22)

for i in range(18):
flag += chr(ord(v26[i]) + 9)
print(flag)

0x04-wp2

​ 我认为这个题用动态调试更好一点。

注意:首先得在C:\Users\CSAW2016\haha\flag_dir\flag.txt创建文件,否则程序会报错退出。

Step1:让ida与gdb地址对齐,具体方法见https://www.cnblogs.com/lyxin/p/6282030.html

Step2:如下所示打断点:

image-20221031234531976

image-20221031234627086

Step3:可以在EAX中看到flag(ida中可以分析出来)

image-20221031234727710

x64dbg 指令:

1
2
3
4
5
6
alt+e // 符号栏
F7 // 步进
F8 // 步过
F9 // 程序运行
F2 // 打断点
Ctrl+G // 跳到某个位置

留言

2022-10-31

© 2024 wd-z711

⬆︎TOP