Bugku-CTF-文件包含2(文件包含,图片马)

Bugku-CTF-文件包含2(文件包含,图片马)
最新回答
一脸懵

2026-08-09 08:33:23

Bugku-CTF-文件包含2(文件包含,图片马)解题步骤

首先,这题主要考察了HTML实体编码、图片马的上传(绕过限制)、文件包含漏洞,以及通过蚁剑连接webshell。解题过程可以分为以下几个步骤:

一、解码HTML实体编码

  1. 观察响应头:在响应头中,我们可以看到一段HTML实体编码的提示信息。
  2. 解码过程:

    使用Python进行解码。

    编码字符串为:""include.ph&#112""。

    解码后得到字符串:"include.php"。

二、访问include.php并发现隐藏提示

  1. 访问include.php:在浏览器中访问解码后得到的"include.php",得到一个空的响应页面。
  2. 发现隐藏提示:在页面的源代码或响应中,发现隐藏提示"upload.php"。

三、访问upload.php并上传图片马

  1. 访问upload.php:在浏览器中访问"upload.php",看到一个文件上传页面。

  2. 尝试上传图片马:

    制作图片马:将一句话木马嵌入到图片中。这里需要注意的是,由于"<?php"可能会被替换或过滤,因此可以尝试使用""这种老旧的PHP标签。

    上传后发现,"<?php"被替换成了"_",说明存在过滤机制。

  3. 修改载荷:

    将载荷修改为:"@eval($_POST['x']);"。

    这个载荷使用了""标签来嵌入PHP代码,并使用"@eval"函数来执行传入的字符串作为PHP代码。

    "@"是一个错误抑制符,意味着即使eval执行失败,也不会显示错误信息。

  4. 重新上传图片马:上传修改后的图片马,并确认载荷完整。

四、通过文件包含漏洞使用蚁剑连接webshell

  1. 访问上传的图片马:在浏览器中访问上传的图片马文件。

  2. 确认载荷执行:通过查看页面源代码或使用工具(如Burp Suite)拦截请求,确认载荷已经被成功执行。

  3. 使用蚁剑连接:

    打开蚁剑工具。

    输入目标URL(即包含文件包含漏洞的页面URL,通常是"include.php"或类似页面,并带上包含图片马文件的参数,如"?file=上传的图片马文件名")。

    选择合适的编码和传输协议(通常是POST)。

    在"数据"或"密码"字段中输入用于执行载荷的参数(在本例中是"x"),并设置其值为蚁剑的密码(通常是随机生成的字符串)。

    点击"连接"按钮,尝试连接webshell。

  4. 成功连接并找到flag:

    如果连接成功,蚁剑会显示一个文件管理器界面。

    在文件管理器中,浏览到"/"目录下,可以看到flag文件。

    打开flag文件,即可看到flag内容。

解题过程图示

以下是一些关键步骤的图示:

通过以上步骤,我们可以成功解决Bugku-CTF-文件包含2这道题目,并找到flag。