进入主函数,要输入一个flag,格式是actf{}
关键函数sub_83A
直接进入函数会报错,不能正确反编译
将配置文件中hexrays.cfg
MAX_FUNCSIZE 修改为1024
修改后保存
比较大,需要反编译一会
进入了函数中
这是将输入的flag进行了3000行的异或之后与存储的字符串进行比较
我们可以将这些异或代码逆序粘贴来实现逆向过程,但是工作量有点大
可以使用pwntools直接穷举所有可能的11位字符串进行穷举爆破
from pwn import * flag = "actf{" k = 0 for n in range(12): for i in range(33,127): p = process('./SoulLike') _flag = flag + chr(i) print(_flag) p.sendline(_flag) s = p.recvline().decode() if "on #" in s: r = int(s.split("on #")[1].split("\n")[0]) if r == k+1: print(s) flag += chr(i) k += 1 p.close() print(flag)
flag{b0Nf|Re_LiT!}