原文链接:https://blog.csdn.net/m0_55771794/article/details/118709290
这道题目需要我们去对后端语句进行猜解
1、输入非零数字得到的回显1和输入其余字符得不到回显=>来判断出内部的查询语句可能存在有||
2、也就是select 输入的数据||内置的一个列名 from 表名=>即为
后台语句为:select $post['query']||flag from Flag
所以我们要解决的问题是 || 或这个问题
测试语句: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将 ||视为字符串的连接操作符而非 “或” 运算符
在oracle 缺省支持 通过 ‘ || ’ 来实现字符串拼接。
但在mysql 缺省不支持。需要调整mysql 的sql_mode
模式:pipes_as_concat 来实现oracle 的一些功能
这个就可以解决||带来的问题了
select 1||flag from Flag呢,看起来没有遇见过,但是就是相当于在表后面加一列 1
还有一个非预期解 ,1 好像是因为没有过滤而造成的,拼接后不难理解
标签:SUCTF,语句,PIPES,EasySQL,Flag,2019,mode,sql,select From: https://www.cnblogs.com/0xo0Kerk/p/17057628.html