BUUCTF-[ACTF2020 新生赛]Include 1 write up

先打开靶机,

ctrl+u查看一下页面源代码:

BUUCTF-[ACTF2020 新生赛]Include 1 write up_第1张图片

“?file=flag.php”表示这里应该有文件包含漏洞 ,页面调用了include语句,那么我们使用php伪协议中的php://filter

php://filter可以获取指定文件源码。当它与include函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致任意文件读取。 

php://filter可以使用不同的参数来达到不同的作用:

resource(要过滤的数据流):必写,指定了要筛选过滤的数据流。

read(读链的筛选列表):可选,可以设定一个或多个过滤器名称

write(写链的筛选列表):可选,可以设定一个或多个过滤器名称

这里我们选择把flag.php转换base64编码进行输出,因为base64编码中只包含64个可打印字符,当php遇到不可解码的字符时,会选择性的跳过,就能看到源代码。

采用过滤器:convert.base64-encode.

最终由:?file=php://filter/convert.base64-encode/resource=flag.php

即可获得base64加密后的flag.php,代入base解码即可得到flag。

BUUCTF-[ACTF2020 新生赛]Include 1 write up_第2张图片

 base64解密网址:base64解码 base64编码 在线base64解码/编码工具 (ip138.com)

拓展:

文件包含漏洞:服务器执行PHP文件时,可以通过文件include或require函数加载另一个文件中的PHP代码,并且当PHP来执行。

比如建立了一个foot.php,里面包含了信息,在另一个页面只需要使用include(foot.php)即可引用这些信息,更方便修改,但也容易导致漏洞。

php伪协议:php://filter 是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取,可以获取指定文件源码.

协议常见参数:resource,write,read

过滤器:

转换过滤器 字符串过滤器 压缩过滤器
对数据流进行编码,通常用来读取文件源码。 用来处理掉读入的所有标签 压缩和解压数据流中的有效载荷部分

convert.base64-encode & convert.base64-decode

base64加密解密

string.rot13,string.toupper,

string.tolower,

string.strip_tags

zlib.deflate(压缩)和zlib.inflate(解压)

你可能感兴趣的:(web,web,经验分享,网络安全)