web基础漏洞-sql注入绕过

前提:确实存在sql注入,换句话说未使用预编译,绕过才有可能。

这里阐述针对的是mysql语法。

1、大小写混杂

2、双写绕过

如果服务端检查到敏感词,对其删除后继续执行。那么可以提交数据时进行双写绕过,比如selselectect,提交后变为select

拓展来说,如果服务端最多检查n次,并且每次删除检查到的敏感词,那么可以进行n+1双写

3、逻辑关键词的相互替换

如果服务端检查禁止了其中一个逻辑关键词,可以用其它等价形式替代

  • and true, and 1, or not 0等价
  • and与&&、or与||、not与!等价
  • where if(if()),if本身可以返回true或false,嵌套的if可以实现逻辑关系

4、注释的相互替换

--空格和#

多行注释

5、内部注释替代空格

6、内联注释

/*!*/,绕过对关键词组合的检查,以及绕过空格

7、二次注入

如果服务端的某个语句未进行预编译,但检查限制了某些字符或关键词的输入,且该sql语句中存在对数据库表的查询作为值或条件使用。

那么攻击者可以从其它接口,先将待使用的敏感字符作为值写入到数据库中,然后请求执行前面的sql语句,服务端读取进行填充

8、宽字节编码

数据库使用的编码和服务端程序的编码不同,使得服务端可以检查放行的安全字符,在数据库sql语句执行时变为了敏感字符。

一般是服务端使用多字节的编码,检查的是一个多字节字符,在数据库中被拆分为多个字节,其中某个字节转为敏感字符'或"

9、进制绕过替代引号

posted @ 2023-10-20 20:20  挖洞404  阅读(38)  评论(0编辑  收藏  举报