1.打开题目
然后我们先输入1看看
回显是1,我们再看看0
0就没有什么回显,然后我们去看看源代码
也只有看出post,其它也没有什么
2.我们查看数据库 1;show database;
回显为1,我们接着查看表 1;show tables;
我们就只有看到flag一张表
然后我们接着查 1; show columns from Flag;
发现过滤了flag,看了其它的wp,这道题是内部查询语句,想让||不是逻辑或,用sql_mode去转换它,设置 sql_mode=PIPES_AS_CONCAT来转换操作符的作用
sql_mode它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查
其中的PIPES_AS_CONCAT
将 ||
视为字符串的连接操作符而非 “或” 运算符
还有就是这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个||
相当于是将 select 1
和 select flag from flag
的结果拼接在一起
我们用1;set sql_mode=PIPES_AS_CONCAT;select 1就可以查出数据(小写也是可以的)
还有一种方法是用post