update
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#LFI(Local File Include)漏洞
|
# LFI(Local File Include)漏洞
|
||||||
|
|
||||||
##漏洞简介
|
## 漏洞简介
|
||||||
|
|
||||||
下面是纯bb,了解过的跳过这部分;
|
下面是纯bb,了解过的跳过这部分;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ include和require区别主要是,include在包含的过程中如果出现错
|
|||||||
|
|
||||||
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。
|
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。
|
||||||
|
|
||||||
##这个玩意儿与CTF的渊源(协议基础)
|
## 这个玩意儿与CTF的渊源(协议基础)
|
||||||
1. `php://`伪协议 >> 访问各个输入/输出流;
|
1. `php://`伪协议 >> 访问各个输入/输出流;
|
||||||
- php://filter
|
- php://filter
|
||||||
1. 解释:php://filter是一种元封装器,设计用于"数据流打开"时的"筛选过滤"应用,对本地磁盘文件进行读写。简单来讲就是可以在执行代码前将代码换个方式读取出来,只是读取,`不需要`开启allow\_url_include;
|
1. 解释:php://filter是一种元封装器,设计用于"数据流打开"时的"筛选过滤"应用,对本地磁盘文件进行读写。简单来讲就是可以在执行代码前将代码换个方式读取出来,只是读取,`不需要`开启allow\_url_include;
|
||||||
@@ -90,7 +90,7 @@ include和require区别主要是,include在包含的过程中如果出现错
|
|||||||
- allow\_url_fopen = On `默认打开` ,允许URLs作为像files一样作为打开的对象;
|
- allow\_url_fopen = On `默认打开` ,允许URLs作为像files一样作为打开的对象;
|
||||||
- allow\_url_include = On `默认关闭` ,允许include/require函数像打开文件一样打开URLs;
|
- allow\_url_include = On `默认关闭` ,允许include/require函数像打开文件一样打开URLs;
|
||||||
|
|
||||||
##函数解释
|
## 函数解释
|
||||||
|
|
||||||
1. file\_get_contents():这个函数就是把一个文件里面的东西 (字符)全部return出来作为字符串。
|
1. file\_get_contents():这个函数就是把一个文件里面的东西 (字符)全部return出来作为字符串。
|
||||||
- 除此之外,通过实践我发现这个函数如果直接把字符串当作参数会报错,但如果包含的是http协议的网址,则会像curl命令一样,把源码读出来。而php伪协议也是识别http协议的,所以说上面php://input可以将POST的数据读过来来赋值给参数,这就造成了上述那个例子的漏洞。
|
- 除此之外,通过实践我发现这个函数如果直接把字符串当作参数会报错,但如果包含的是http协议的网址,则会像curl命令一样,把源码读出来。而php伪协议也是识别http协议的,所以说上面php://input可以将POST的数据读过来来赋值给参数,这就造成了上述那个例子的漏洞。
|
||||||
|
|||||||
Reference in New Issue
Block a user