【攻防世界】题目名称-文件包含

进入题目,给的是一串代码

 用 dirseach 扫一下有哪些文件,发现 flag.php ,应该就是目标

 

尝试直接访问失败,思考用什么方法。可又是给的代码中 file 又是 include ,再加上题目的提示,很难不让人想到使用文件包含。

简单介绍一下文件包含:文件包含(File Inclusion)是一种在编程中常见的功能,它允许一个文件(通常是一个脚本或程序)读取并执行另一个文件的内容。在 Web 开发中,文件包含通常用于 PHP、JSP、ASP.NET 等服务器端脚本语言,但也可以用于任何支持文件读取和执行的编程语言。而文件包含漏洞(File Inclusion Vulnerability)允许攻击者通过操纵输入来包含服务器上的任意文件或目录内容,可能导致敏感信息泄露或任意代码执行。这种漏洞通常出现在应用程序使用 include()require() 等函数加载文件时,如果攻击者能够控制这些函数的参数,那么他们就可以将任意文件的内容包含到应用程序中执行。

php的文件包含漏洞,可以用到的伪协议如下:

file:// 访问本地文件系统
http:// 访问http(s)网址
ftp:// 访问ftp
php:// 访问各个输入/输出流
zlib:// 压缩流
data:// 数据
rar:// RAR压缩包
ogg:// 音频流

本题而言,用到的是php://伪协议,用法如下:

php://input,用于执行php代码,(需要post请求提交数据)。

php://filter,用于读取源码,?filename=php://filter/read=convert.base64/resource=/etc/passwd

简单试探一下,发现有拦截,但根据它的提醒,应该要一条路走到黑

 

尝试 php://filter 文件包含的 base64编码,提示 do not hack! ,应该是触发了黑名单关键字

 

 尝试使用字符集,提示有了变化,于是尝试用别的字符集组合。

PHP官网得知,PHP 扩展支持的字符编码有以下几种,* 表示该编码也可以在正则表达式中使用,开始暴力破解

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*
ISO-2022-JP
ISO-2022-JP-MS
CP932
CP51932
SJIS-mac
SJIS-Mobile#DOCOMO
SJIS-Mobile#KDDI
SJIS-Mobile#SOFTBANK
UTF-8-Mobile#DOCOMO
UTF-8-Mobile#KDDI-A
UTF-8-Mobile#KDDI-B
UTF-8-Mobile#SOFTBANK
ISO-2022-JP-MOBILE#KDDI
JIS
JIS-ms
CP50220
CP50220raw
CP50221
CP50222
ISO-8859-1*
ISO-8859-2*
ISO-8859-3*
ISO-8859-4*
ISO-8859-5*
ISO-8859-6*
ISO-8859-7*
ISO-8859-8*
ISO-8859-9*
ISO-8859-10*
ISO-8859-13*
ISO-8859-14*
ISO-8859-15*
ISO-8859-16*
byte2be
byte2le
byte4be
byte4le
BASE64
HTML-ENTITIES
7bit
8bit
EUC-CN*
CP936
GB18030
HZ
EUC-TW*
CP950
BIG-5*
EUC-KR*
UHC
ISO-2022-KR
Windows-1251
Windows-1252
CP866
KOI8-R*
KOI8-U*
ArmSCII-8

使用 Burp Suite 的 Intruder 模块,切换为集束炸弹模式,设置好 payload 位置

 设置 payload 的内容,点击开始攻击,总共请求近六千次,不过刚开始没多久就爆破出flag了

 flag:cyberpeace{fd7b08600d2a514b7d5b30daf3c29f4a}

 

posted @ 2025-05-02 15:32  Antoniiiia  阅读(371)  评论(0)    收藏  举报