sql注入学了主要还是用来打ctf的,在这里记录刷过关于sql注入的题目
[SUCTF 2019]EasySQL
从这道题学到了堆叠注入
,顺便介绍一下
- Stacked injections(堆叠注入) 从字面意思就是一堆sql语句注入众所周知,每条sql语句后面都是一
;
结尾的,那么我们就可以多句一起使用 - 与
union
的区别:union执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意语句。 - 但是堆叠注入是由局限性的,例如php为了防止sql注入机制,使用数据库的函数时
mysqli_quert()
,其只能执行一条语句,分号后面的内容将不会执行
这道题的考点有两个:
1.堆叠注入
2.set sql_mode=PIPES_AS_CONCAT;
3.没有过滤*
因为这道题的逻辑可能是
select $_POST[query] || flag from flag
所以使用set sql_mode=PIPES_AS_CONCAT;
将||
视为字符串连接操作符而非或运算符。
payload:
1;set sql_mode=PIPES_AS_CONCAT;select 1