博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件包含
阅读量:7057 次
发布时间:2019-06-28

本文共 2068 字,大约阅读时间需要 6 分钟。

参考文献:

制作图种:

copy 1.png/b+1.php/a 2.png

/b:以二进制打开。用于图像类/声音类文件

/a:以ascii打开。用于txt文档类文件

php中引发文件包含漏洞的函数:

①.include()
②.include_once()
③.require()
④.require_once()

LFI(Local File Inclusion):

用include()的时候,出错的话,只会提出警告,会继续执行下面语句。

img_b00ced9169352bab663b2b1cbac604b3.png
2.png

用require()的时候,出错的话,会提出警告,不会继续执下面语句。

img_79df34c548f1a9e6d72083a2c2c7271f.png
3.png

require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。

当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。(1.txt为同目录下的一个文件,内容<? php info(); ?>)

img_796bd4989b7043784964b43640792a16.png
1.png
img_5dcf15d922e8586a695357d2aaa38f4a.png
4.png

RFI(Remote File Inclusion)

远程文件包含漏洞,是指能够包含远程服务器上的文件并执行,远程服务器的文件是我们可控的。
在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

img_2904eeb75437bcd76967545b0c97dbf6.png
2.png

:allow_url_include = On,对allow_url_fopen不做要求。

img_355c98b739ec903a1cc6c28f081fa3b9.png
1.png
:没有要求。
/1.php?filename=
/1.php?filename= 可绕read,通过指定末尾的文件,可以读取经base64加密后的文件源码,之后再base64解码一下就行。

phar://:php版本大于等于php5.3.0(相对路径或绝对路径都可以)

/1.php?filename= #1.zip为1.txt的压缩文件,1.txt内容不变
/1.php?filename=

:版本大于等于php5.3.0,需要指定绝对路径,同时将#编码为%23,之后填上压缩包内的文件,适用于验证包含文件为特定后缀时。

/1.php?filename=

img_fe7d746747938a5fa7e810fb52f8b55b.png
1.png
/2.php?file=
其实感觉这个挺鸡肋的,要是能找到文件的绝对路径,直接上菜刀多好了。。。

data:URI schema:php版本大于等于php5.2,allow_url_fopen = On,allow_url_include = On

/1.php?filename=data:text/plain,%3C?php%20phpinfo();?%3E
/1.php?filename=data:text/plain,%3C?php%20system(%22whoami%22);?%3E
/1.php?filename=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b #加号+的url编码为%2b,PD9waHAgcGhwaW5mbygpOz8+的base64解码为:<?php phpinfo();?>,可以将需要的内容base64加密,然后用这个命令执行。

apache+linux 默认配置文件

/etc/httpd/conf/httpd.conf或者/etc/init.d/httpd

还可以使用"../../../"这样的方式来返回到上层目录中,这种方式又被称为"目录遍历,还可以通过不同的编码方式来绕过一些服务器端的防御逻辑

敏感文件:

1、Windows:
C:boot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase.xml //IIS配置文件
C:Windowsrepairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql配置
C:Program Filesmysqldatamysqluser.MYD //Mysql root
C:Windowsphp.ini //php配置信息
C:Windowsmy.ini //Mysql配置信息

2、Linux:

/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/passwd
/etc/shadow
/etc/my.cnf
/etc/httpd/conf/httpd.conf
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts
/porc/config.gz

转载地址:http://nkmol.baihongyu.com/

你可能感兴趣的文章
Go 1.12发布:改进了运行时性能以及模块支持
查看>>
40%创业公司用伪AI忽悠钱,欧洲被AI时代抛弃了吗?
查看>>
AT&T签署8位数合同,设备商恐无法从5G获利
查看>>
Netflix Play API:我们为什么构建了一个演进式架构?
查看>>
我不是仆人,是主人!敏捷中领导力的新比喻?
查看>>
Next.js 7.0正式发布:重新编译速度提高42%,支持WebAssembly
查看>>
Java API for RESTful Web Services 2.1发布
查看>>
Visual Studio 2017 15.8第一个预览版发布,支持ARM64
查看>>
Java日志性能那些事
查看>>
Invokedynamic:Java的秘密武器
查看>>
Raffi Krikorian 为“在运行中进行架构重写”提供了指南
查看>>
Plaid.com的监控系统如何实现与9600多家金融机构的集成
查看>>
Laravel学习笔记之PHP反射(Reflection) (上)
查看>>
Build Your Own Promise
查看>>
bootstrap - form
查看>>
业务安全通用解决方案——WAF数据风控
查看>>
nginx 配置 默认网站根目录(权限问题导致403 Forbidden错误的解决方法)
查看>>
NodeJS发送邮件
查看>>
再谈Js闭包
查看>>
C++ 打造 Markdown 解析器
查看>>