64位无壳。IDApro打开,查看main函数
逻辑很简单,我们来查看sub_83A函数。点进去,toobig
看了其他博客。
我们需要将ida /ctg目录下的hexrays.cfg文件中的MAX_FUNCSIZE=64 改为 MAX_FUNCSIZE=1024
改完看函数
好长:看最后部分,一大堆异或,然后比较
第一个想到了爆破,最近在学angr,尝试用angr解题
脚本:
import angr
p = angr.Project('SoulLike',load_options={"auto_load_libs":False})
st = p.factory.entry_state()
sm = p.factory.simulation_manager(st)
sm.explore(find=0x411176, avoid=0x411195)
print(sm.found[0].posix.dumps(0))
注意:载入之后会有两个warning,第一个提示注意偏移地址,要加上0x400000
第二个是线程局部存储,没搞懂,不管他;
find的地址:也就是判断为flag正确的地址
void的地址:也就是flag判断错误的地址
最后的flag:
actf{b0Nf|Re_LiT!}