BUUCTF:[SUCTF 2019]EasySQL

题目地址:https://buuoj.cn/challenges#[SUCTF%202019]EasySQL

在这里插入图片描述
SQL查询,观察回显,这里应该是用var_dump()输出

在这里插入图片描述
在测试查询的时候发现有些字符能使用,有些字符被过滤了,因此查询点进行fuzz测试,看看过滤了哪些字符

在这里插入图片描述
回包长度为523的都是可以使用的,其他的字符均已被过滤
PS:这里使用Burp进行fuzz的线程不要开太高,容易报429,fuzz的字符不多可以慢慢跑

;可以使用,尝试堆叠注入

在这里插入图片描述
在这里插入图片描述
首先这里的query参数无论我们输入数字什么都只会回显Array([0]= > 1),输入字母不会显,但是也没显示是过滤的,所以query的值如果为非数字则无法正确查询得到数据回显,那么查询语句就应该长这样

$sql = "select ".$post['query']."||flag from Flag";

在这里插入图片描述
知道查询语句了就好做了,先看一个非预期解

非预期解

||在SQL语句中表示,在查询表中的字段内容时,逗号,用于查询多个字段名

在这里插入图片描述
在这里插入图片描述
payload

*,1

在这里插入图片描述
预期解

通过修改SQL配置将或运算符||设置为连接符

set sql_mode=PIPES_AS_CONCAT;

在这里插入图片描述

payload

1;set sql_mode=PIPES_AS_CONCAT;select 1

这样拼接得到的语句就应该是

select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mochu7777777/article/details/108937396