-
-
[原创]看雪CTF 第八题挖宝 偷鸡解题思路
-
发表于:
2019-3-27 17:45
7151
-
之前周末的时候要去打TCTF,就没有详细的写这道题的WP,现在重新分享下这道pwn的偷鸡解法。
通过IDA静态分析,我们可以发现在call main_treasure后函数的返回地址的偏移是0xD7461,
我们可以通过局部写覆盖它最后一个字节为0x48,这样当返回的时候它会调用printf函数,并再次进入main_treasure函数调用leave_message
程序的溢出漏洞十分的明显。
而且我们发现在得到宝藏一之后,输入48个字节后溢出的8个字节会被当成下一次宝藏1堆块分配的地址。
golang堆栈的地址是固定的。
一个很自然的方法是直接分配堆块到栈上覆盖返回地址进行ROP。
然而checksec 后发现程序开启了pie
但开启了pie并不代表就不能进行ROP了
同时,更加有趣的是,main_println函数会在这个时候打印出的内容中有text段上的一个地址(可以获得process的基址),并且再次调用main_treasure函数leave_message的地址还是上次leave_message的地址(也就是说能够再次覆盖返回地址进行ROP)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-3-28 09:58
被kanxue编辑
,原因: