堆叠注入

sql中每个分号代表一个语句的结束
在注入点可以像这样构建语句
1';
payload;
payload;
......
堆叠注入得不到API和数据库引擎支持的话就无法实现

修改名字爆出内容

当堆叠注入可行时,select等常规查询手段被过滤,注入点的查询语句被推测出之后,可以通过修改语句中的对应的字段名和表名来构造payload获得表内字段内容。
假设注入点查询语句为
select a,b from c where id = ''
通过堆叠注入可以修改对应字段和表名,将a、b、c重命名成其他名字,将想要查询的表和字段名修改成a、b、c,输入1' or 1=1# 来构成查询
一般的修改方法使用rename table xxx to xxx即可修改表名
使用alter table 表名 change 原名 新名修改字段名
如果rename和alter被过滤还可以使用HANDLER语句来查询字段
HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭
官方文档

HANDLER tbl_name OPEN [ [AS] alias]

HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]

HANDLER tbl_name CLOSE