前置工作
打开靶机,看到的就是如此简简单单的文件上传入口,通常这种文件上传的就应该想到一句话木马,然后使用蚁剑获得靶机的操控权
通常我们会这么写一句话木马
eval($_POST['蚁剑连接密码']); @ |
网页的标题名字叫上传头像
,说明我最好伪造一个图片文件,把木马植入进去
图片木马
为什么要伪造 GIF 作为木马图片,因为文件头是固定的,如果你的文件头是 GIF89a?
,那么你就是一张 GIF 图片(不论你后面跟着的是什么),所以我们就用最简单的方法制作一个 GIF 图片木马,以下是 a.gif
的代码
GIF89a? |
随后我们上传 a.gif
,发现报错 NO! HACKER! your file included '<?'
,说明他检测到了我木马文件中的 <?php
字段,那么我现在希望的是能绕过这个检测,这就需要 PHP 的另一种写法了
木马改进
除了使用 <?php ?>
的方式声明 PHP 代码,我们还能够使用传统的 JS 脚本声明方法,即 <script lang="php"></script>
,这就能够绕过 <?php
的检测,以下是改进后的木马
GIF89a? |
我们把改进后的 a.gif
上传,发现上传已完成,但是 .gif
的格式摆脱不了被当成图片处理的本质,我们需要对后缀进行更改
后缀更改
我们使用 Burp Suite 进行第二次上传,使用拦截模式提供的内嵌浏览器,将刚才的 a.gif
再一次上传,此时查看 Burp Suite 发现已经将 Http 请求拦截下来了
在第 16 行有一个 filename="a.gif"
,我们直接点,把 .gif
改成 .php
,并放行,发现报错
说明我们不能很单纯地使用 .php
后缀,但是实际上不仅仅有 .php
后缀的文件才能被执行,我们可以使用变式后缀,例如 .phtml
,打开的时候也会被当成 PHP 文件执行,于是我们更改 filename="a.phtml"
,再次放行
攻入靶机
发现文件已经成功上传,我们猜测保存在根目录,尝试访问 /a.phtml
,发现不存在,再次猜测保存在 /upload
目录,尝试访问 /upload/a.phtml
,发现能够访问,但是除了第一行的 GIF89a?
之外没有任何内容,此时是正常情况,我们已经可以利用蚁剑进行连接了,我们打开蚁剑,右键添加数据,按照如下图所示填写内容,连接密码即在一句话木马中,随后点击测试连接,提示连接成功,点击添加即可
随后如下页面右键选择文件管理
进入后直接往根目录去看,拉到底一下就发现了 flag
文件
点开就能看到 Flag 了,最终结果为 flag{8cf43e2c-bfc7-4900-80d7-900ff5512f1a}