https://buuoj.cn/challenges#[ACTF%E6%96%B0%E7%94%9F%E8%B5%9B2020]SoulLike
elf 64
太大了,反编译不了
试试动调 输入 actf{111111111111111111} 看出来是对输入和验证都进行了操作,这不好搞了
看看别人是怎么做的
- 调整 ida 配置,然后逆向脚本:进入 cfg 文件夹,找到 hexrays.cfg 文件,打开,找到 MAX_FUNCSIZE
将原来的 64 改为 1024,重新启动 ida 即可
看别人的 WP 好像可以用 angr 符号求解
最近比较有空,学一下 angr 吧
对每个字符都进行一个判断,一旦不对就退出
❯ checksec --file=SoulLike
RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols No0 1 SoulLike
用 checksec 查一下发现有 PIE 偏移,不知道 angr 跑不跑的了
查了资料:
angr automatically loads PIE binaries at 0x400000. angr has no trouble dealing with PIE binaries.
原来是这样,那就加上嘛
堆栈信息
-00000000000000B9 flag db ?
-00000000000000B8 var_B8 dd ?
-00000000000000B4 j dd ?
-00000000000000B0 buffer dd 14 dup(?)
-0000000000000078 db ? ; undefined
-0000000000000077 db ? ; undefined
-0000000000000076 input db 8 dup(?)
-000000000000006E db ? ; undefined
-000000000000006D db ? ; undefined
-000000000000006C db ? ; undefined
-000000000000006B db ? ; undefined
-000000000000006A db ? ; undefined
-0000000000000069 db ? ; undefined
-0000000000000068 db ? ; undefined
-0000000000000067 db ? ; undefined
-0000000000000066 db ? ; undefined
-0000000000000065 db ? ; undefined
-0000000000000064 db ? ; undefined
-0000000000000063 db ? ; undefined
-0000000000000062 db ? ; undefined
-0000000000000061 db ? ; undefined
-0000000000000060 db ? ; undefined
-000000000000005F var_5F db ?
我的电脑跑不出来,好像别人的可以,可能是我的电脑太菜了?🥲
试一下反编译软件 retdec 好慢……
file
命令查看文件信息
还是用 IDA 跑吧,就是反过来跑一次
注意加法操作要变成减法等等,这里打个脚本先
b0Nf|Re_LiT!