Bugku-web-文件包含

Bugku-web-文件包含

在这里插入图片描述

解题思路

进入靶场
在这里插入图片描述
出现click me?点击试试

新页面显示index.php,且url上出现?file=show.php
在这里插入图片描述
?file=XXX.php等是典型的文件包含

题目页面显示了index.php,首先在url后面改为?file=index.php看看,发现不能进入这个页面

在这里插入图片描述

之后就想到文件包含可以使用PHP伪协议,php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

获取源码代码
?file=php://filter/resource=xxx.php

通常获取源代码时,伪协议将xxx.php当文件执行,
使得很多信息往往不能直接显示在浏览器页面上,通常使用base63编码后再显示
?file=php://filter/read=convert.base64-encode/resource=index.php

然后怎么做题就显而易见了
先在url后改为
?file=php://filter/read=convert.base64-encode/resource=show.php
在这里插入图片描述通过Base64解码后发现内容就是index.php,说明show.php没有隐藏信息

再在url后改为
?file=php://filter/read=convert.base64-encode/resource=index.php
在这里插入图片描述
获得一大串编码,解码后为
在这里插入图片描述
flag就出现了

文件包含知识点

一、原理:

  • 在开发过程中,当频繁需要跳转网页,或者需要某个函数时,程序员喜欢将重复的函数写道一个单独的文件中,在需要时调用文件,这种文件调用叫做文件包含

  • 文件调用可以使代码更简介,同时使用代码更方便、更快速,但同时也带来的对应的漏洞

  • 当调用的不是函数,而是一个文件时,就相当于把这个文件变了变量,也就给了用户操控参数的机会,就可能造成文件包含漏洞

二、PHP伪协议

2.1 php://fileter

可以读取目标文件的内容,由于读取时,一些代码不能显示,通常使用Base64加密后读取再解密,

第一种用法:
?file=php://filter/convert.base64-encode/resouce=xxx.php?
第二种用法:
?file=php://filter/read=convert.base64-encode/resource=xxx.php
————————————————

2.2 php://input
可以将POST请求当作代码使用,有限制条件

php <5.0 ,allow_url_include=Off 情况下也可以用

php > 5.0,只有在allow_url_fopen=On 时才能使用

代码:

?file=php://input
在url上后接,之后利用Hackbar通过POST把数据传过去

用法:
1.写入木马如在POST中输入

<?php system("dir")?>
查询全部目录文件
<?php 
	$file=fopen("flag.php","w");
	echo  fputs($file,"Hello World");
	fclose($file);
?>
以写入方式打开某某文件文件,如果没有就新创建一个
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值