2026-04-29 00:38:01
SQL常见BYPASS方式
在SQL注入攻击中,攻击者常常会遇到各种防御措施,如参数替换、前端判断、空格过滤、黑白名单等。为了绕过这些防御,攻击者会采用各种BYPASS方式。以下是一些常见的SQL BYPASS方式:
复写
通过重复书写关键字或特殊字符,绕过对单个字符或关键字的过滤。
例如,将SELECT复写为SEL/*comment*/ECT。
大小写
利用SQL语句对大小写不敏感的特性,将关键字转换为大写或小写,绕过对特定大小写的过滤。
例如,将select转换为SELECT。
禁用JS
在某些情况下,前端JavaScript可能会拦截或修改输入。禁用JavaScript可以绕过这些前端防御。
通过浏览器设置或插件禁用JavaScript。
+或特殊字符
使用加号(+)或其他特殊字符(如%00、%23等)来绕过空格过滤或特定字符过滤。
例如,使用+代替空格,或使用%23(即#)作为注释符。
参数污染
通过在URL或表单中多次提交相同的参数,造成参数污染,从而绕过对单个参数的过滤。
例如,在URL中多次添加?id=1参数。
逐字拼接
将SQL语句的关键字或特殊字符逐字拼接,绕过对完整语句的过滤。
例如,通过多次请求,每次请求只发送SQL语句的一部分,然后在服务器端拼接成完整的SQL语句。
分段传输
将SQL语句分成多个部分,通过不同的请求或渠道传输,然后在服务器端重新组合。
例如,将SQL语句的头部、主体和尾部分别通过不同的HTTP请求发送。
具体情景下的BYPASS示例
情景一:网站过滤了输入的and
解决方式:使用大小写变换(如aAndNd、AnD)或复写(如a/*comment*/nd)来绕过过滤。
情景二:前端拦截敏感字符
解决方式:禁用JavaScript、抓包修改请求内容或利用参数污染绕过前端拦截。
情景三:and直接不能用或输入特定字符时被拦截
解决方式:使用宽字节注入、其他逻辑运算符(如|)或复写技术绕过。
某狗绕过示例
and绕过
当and 1=1被拦截时,可以尝试使用and -1=-1、xor -1=-1或| 1=1等变体。
order by绕过
当order by 3被拦截时,可以尝试使用order%23%0Aby或order/*!70000*/by等变体。
union select绕过
当union select被拦截时,可以尝试使用UNION/*!70000AAA*/%23%0ASELECT%0A+1,2,3等变体。
注意事项
SQL小常识
总之,在进行SQL BYPASS时,需要充分了解目标系统的防御措施和SQL语句的特性。通过灵活运用各种技巧和变体,可以有效地绕过防御并发现潜在的漏洞。