首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PWN之system函数参数非/bin/sh的情况

本文由wkeyi0x1原创

一般的栈溢出类型的题都是有system函数并且执行的命令是/bin/sh,我们只需要将溢出的字节数控制到返回地址并把返回地址替换成system函数的地址即可执行/bin/sh来获取一个shell

本文字数:1554字

图片数量:36张

阅读时间:4分钟

准备工具:IDA Pro、Python3、ROPgadget

0x01 预备工作

首先file一下,看到是 ELF 64位程序

然后再checksec一下,可以看到没有开启保护,看着样子是没有保护

0x02 运行程序

· 默认int类型数据最大值是2147483647,如果超出这个值的话就会变成负数

运行程序后是让我们输入int类型的参数,而且题目是easy_int,可以猜想是整数溢出,同时也可以使程序内部条件成立然后执行vuln函数

main函数

vuln函数,发现最后调用了system函数

输入比最大值大的数后发现成功转跳到下一步

0x03 IDA查看_system函数地址

_system函数地址0x00401090(图中红框标记错了,应是上面那个函数)

0x04 修改system函数的参数

进入vuln函数我们可以看到system函数的参数为"ok!"执行的命令并不是/bin/sh

查看溢出长度

接下来就是常规ROP,在read函数执行的时候溢出覆盖返回地址,写入system函数的参数,也就是"/bin/sh"地址

0x05 编写POC

编写payload

POC

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221220A046BR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券