进入主函数,要输入一个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!}