随便注
writeup
这是来自2019强网杯的一道注入题。
inject=1’ and sleep(3) —+ 发现可以执行延时,难道可以直接盲注? 直接上sqlmap
可以跑出来库名,但是跑不出表名,手动测试发现过滤了关键字。
即不用select注入。并且大小写无法绕过,想到用拼接的方式构造select,这里测试发现能够执行多语句。
于是可以用预编译的方式来执行一个变量语句,而这个变量语句可以通过字符串连接构造出select
1 | set @sql=concat('sel','ect * from `1919810931114514`'); |
补充
Mysql预编译
编译
PREPARE stmt_name FROM preparable_stm
——预编译一条语句
执行
EXECUTE stmt_name [USING @var_name [, @var_name] ...]
eg:
1
2
3set @a=999,@b='hello';
prepare ins from 'insert into t select ?,?';
execute ins using @a,@b;释放
{DEALLOCATE | DROP} PREPARE stmt_name
eg:
1
deallocate prepare ins;