• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

buu-[SUCTF 2019]EasySQL

开发技术 开发技术 6天前 8次浏览

打开题目

buu-[SUCTF 2019]EasySQL

 

 先随便输入下试试

buu-[SUCTF 2019]EasySQL

 

 buu-[SUCTF 2019]EasySQL

 

 buu-[SUCTF 2019]EasySQL

 

buu-[SUCTF 2019]EasySQL

 

buu-[SUCTF 2019]EasySQL

 

 输入数字时有回显,输入字母则没有

输入1’时没有回显,输入1“时显示nonono

猜测关闭了错误回显

先看看有多少个字段

buu-[SUCTF 2019]EasySQL

 

 好吧,应该是order by 被过滤了

这样的话联合注入和报错注入就行不通了

试试看布尔盲注和延时注入

buu-[SUCTF 2019]EasySQL

 

 buu-[SUCTF 2019]EasySQL

 

好吧,都不行

想到最近刚学的堆叠注入

试试看

buu-[SUCTF 2019]EasySQL

 

 成功

再看看表

buu-[SUCTF 2019]EasySQL

 

 直接查看表中的数据

buu-[SUCTF 2019]EasySQL

 

应该是from又被过滤了

看了下wp

这道题需要通过回显的内容对后端语句进行猜测

 因为输入任何数字回显的都是Array ( [0] => 1 ),说明1是或运算产生的值,就可能存在||

也就是select 输入的数据||内置的一个列名 from 表名

根据题目buu-[SUCTF 2019]EasySQL

 

 和堆叠注入查询到的内容

猜想||拼接的可能是 flag form Flag(此时||起到的作用是or的作用)

内置的sql语句应该是

sql=“select”.post[‘query’]."||flag from Flag";

解法1

由于本题没有过滤掉*

所以可以直接构造pauload:*,1

buu-[SUCTF 2019]EasySQL

 

原理是当$post[‘query’]的数据为*,1时

sql语句就变成了

select *,1||flag from Flag

也就是select *,1 from Flag

这就可以直接查询到Flag表中的所有内容了

解法2

payload:1;set sql_mode=pipes_as_concat;select 1

pipes_as_concat能将 || 视为字符串的连接操作符而非或运算符

所以实际执行的sql语句就变成了

select 1;set sql_mode=PIPES_AS_CONCAT;select "1"+flag from Flag

 


程序员灯塔
转载请注明原文链接:buu-[SUCTF 2019]EasySQL
喜欢 (0)