Description:
Nana told me that buffer overflow is one of the most common software vulnerability.
Is that true?
Download : http://pwnable.kr/bin/bof
Download : http://pwnable.kr/bin/bof.c
Running at : nc pwnable.kr 9000
Solution:
拿到题先去nc了一下
发现只有简简单单的输入输出,这时查看文件bof
开启了PIE,是动态链接
再看看C文件
可以发现本题的思路是栈溢出
前面虽然开启了PIE,不过PIE影响的只是程序加载基址,并不会影响指令间的相对地址
获得flag的条件是使 key = 0xcafebabe
那我们就来找找key变量相对于溢出点的偏移量吧
可以看到char数组的基址是 ebp - 2Ch ,双击&s变量可以看到gets函数用来输入值的基址为 ebp + 8h
那么偏移量就是 2Ch + 8h = 34h (52)
也就是说,只要用52个字符覆盖之后再输入0xcafebabe就能提权了
构造函数如下from pwn import * r = remote('pwnable.kr','9000') payload = 'a' * 52 + p32(0xCAFEBABE) r.send(payload) r.interactive()
接着运行脚本,得到flag
Flag:
daddy, I just pwned a buFFer :)