2026-08-09 08:33:23
Bugku-CTF-文件包含2(文件包含,图片马)解题步骤
首先,这题主要考察了HTML实体编码、图片马的上传(绕过限制)、文件包含漏洞,以及通过蚁剑连接webshell。解题过程可以分为以下几个步骤:
一、解码HTML实体编码
使用Python进行解码。
编码字符串为:""include.php""。
解码后得到字符串:"include.php"。
二、访问include.php并发现隐藏提示
三、访问upload.php并上传图片马
访问upload.php:在浏览器中访问"upload.php",看到一个文件上传页面。
尝试上传图片马:
制作图片马:将一句话木马嵌入到图片中。这里需要注意的是,由于"<?php"可能会被替换或过滤,因此可以尝试使用""这种老旧的PHP标签。
上传后发现,"<?php"被替换成了"_",说明存在过滤机制。
修改载荷:
将载荷修改为:"@eval($_POST['x']);"。
这个载荷使用了""标签来嵌入PHP代码,并使用"@eval"函数来执行传入的字符串作为PHP代码。
"@"是一个错误抑制符,意味着即使eval执行失败,也不会显示错误信息。
重新上传图片马:上传修改后的图片马,并确认载荷完整。
四、通过文件包含漏洞使用蚁剑连接webshell
访问上传的图片马:在浏览器中访问上传的图片马文件。
确认载荷执行:通过查看页面源代码或使用工具(如Burp Suite)拦截请求,确认载荷已经被成功执行。
使用蚁剑连接:
打开蚁剑工具。
输入目标URL(即包含文件包含漏洞的页面URL,通常是"include.php"或类似页面,并带上包含图片马文件的参数,如"?file=上传的图片马文件名")。
选择合适的编码和传输协议(通常是POST)。
在"数据"或"密码"字段中输入用于执行载荷的参数(在本例中是"x"),并设置其值为蚁剑的密码(通常是随机生成的字符串)。
点击"连接"按钮,尝试连接webshell。
成功连接并找到flag:
如果连接成功,蚁剑会显示一个文件管理器界面。
在文件管理器中,浏览到"/"目录下,可以看到flag文件。
打开flag文件,即可看到flag内容。
解题过程图示
以下是一些关键步骤的图示:








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