[BUUCTF2018 Online Tool]

 进入靶机我们可以直接看到题目信息;

 

 要看懂题目我们首先要知道isset的含义

isse()函数用于检测变量是否设置且并非null(这里应该是检测当前用户的IP);

若'host'不为空则返回true,若为空则返回false,'host'返回为true时执行else语句;

接下来要确定escapeshellarg以及escapeshellcmd的作用详细介绍传送门

escapeshellarg()用于把字符串转码为可以在shell命令里使用的参数,escapeshellcmd()对字符串中可能会欺骗shell命令执行的任意命令执行转义。

//这样看下来我的思路是构造payload,通过两方个函数的转义达成执行命令的目的(下面有个system可用来执行命令,直接进行一波尝试);我们先上传一个正常的参数,返回如下页面

 试试常见的传参姿势| & && 都没有成功,那就只有走老路了,试试用arg和cmd两个函数转义直接写入一句话🐎。

发现没有太大的差别,应该是字符过滤的原因(可能是我payload写错了)  ;

到这里我就卡住了,查看了一下大佬写的wp传送门在这里,发现要使用到后面system中的nmap中的命令。

其原理在于nmap中一个参数-oG可以实现将命令和结果写到文件(大佬的介绍更详细);

知道了怎么做就好构造payload了(bushi

首次构造的 payload如下

 试了几次无果又重新翻看了大佬的文章,发现自己对转义的理解不够透彻,应该在末尾加上空格'

构造新的payload再进行尝试,成功返回了文件夹名

接下来就是用蚁剑进行连接,也是顺利找到了flag

本题主要考察了escapeshellarg()和escapeshellcmd()二者一起使用时造成的漏洞(大佬的WP太厉害了,我对这两个函数的理解还需要加深)

备注:如有问题请私信或者是在评论区指出,我立马改正(是真的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值