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

先打开靶机,

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

“?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。

 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(解压)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值