cpp下strstr路径检测绕过

cpp下strstr路径检测绕过

ssh远程登录test用户,flag就在眼前!嗯?怎么是root权限其他人读不了?哦有个setuid读取程序及其源码。嗯?为什么会检测’flag’啊,不用flag怎么打开对应文件啊?为什么这明明是我test用户的home目录,但权限全是root的啊?我为什么在自己家都不能自由读写啊可恶?!!!!!!!!!

题目

靶机配置了ssh,可以账号test、密码123通过ssh登录到靶机进行攻击。(靶机IP地址见题目中网络拓扑图)。

靶机用户文件夹中存在flag.txt,非root用户无权打开。

同时用户文件夹中配置有一个具有root权限的可执行文件,它可以打开任意文件,但是在打开文件之前会根据文件名判断是否允许打开。(具体代码见用户文件夹下token.c)。

请分析并利用token获取flag。

登录查看文件及其源码

在这里插入图片描述
在这里插入图片描述

分析

strstr检查我们输入的路径是否含有flag字段,因此要避免出现之。

  • 尝试使用./fl*使用shell的自动补全,发现补全行为是在程序执行前的,所以传入参数还是flag。
  • 尝试在传入路径前加上\0,这样strstr的检测会停止在flag前。但是首先在shell中不能传入\0,其次传入\0后cpp的open函数也将无法打开对应路径

大神指点

使用链接
找到唯一一个可以自由创建文件的地方,我们伟大的垃圾桶——/tmp,并在其中创建我们的链接文件。还不能是硬链接,得是软链接。原因可能是因为flag文件及其目录都是root权限,而硬链接实质上相当于拷贝一份文件的地址并给到一个新的指针上。软链接只是相当于Windows中的快捷方式,而token并不是不能打开flag文件,只是不要叫flag即可,因此我们给token传入flag的外号(软链接文件)即可获得flag
在这里插入图片描述

收获

(懒得写了,随便吧,垃圾题可恶,浪费我2个小时)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winnower-sliff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值