CTF中PHP代码审计小tips-9


阅读次数

MiniProject_PHP_Code_audit-9 Writeup

整体逻辑:

文件上传就一定是文件上传吗?【web思路】
前段时间遇到了一个web的真实场景,改编成了一道CTF题目,主要是给web提供一些思路,如果没遇到估计很难想象还会出现这样的代码出现。。。

考点:

文件上传不一定是文件上传,有可能涉及命令执行,给代码审计和渗透测试提供了新的思路。

测试代码:【如下图源代码】

Alt text

Writeup:

从上面的代码可以看出整个流程为,用户通过前端上传文件,通过检测文件上传后的文件名,如果不是txt结束,如果是txt则将上传的文件移动到新的位置,然后执行tail命令,输出文本的最后一行内容。 流程是没有问题的,但是过于相信用户可控的输入,没有进行过滤导致出现命令执行漏洞。如果我们通过截断exec执行的命令,写入一个shell会怎么样呢? 我们可以尝试将文件名构造一下1;echo ‘<?php @eval($_POST[c]); ?>’ >1.php;1.txt【在windows不能这么命名,需要抓包改一下在上传】
Alt text
这时候发现在目录下已经生成1.php的shell文件,链接后可以执行命令
Alt text

参考链接: