数据库
首页 > 数据库> > BUUCTF-[SUCTF2019]EasySQL

BUUCTF-[SUCTF2019]EasySQL

作者:互联网

[SUCTF2019]EasySQL

这个连闭合都测试不出来,就有点无从下手了。

额,随手输了一个1;show tables;出来了表名。一通操作之后,点开了别人的wp,学习了一波。

然后知道了题目中的查询语句是怎么样的了,

sql="select".post['query']."||flag form Flag"

并且知道了,这个是拼接出来的语句,此处||的作用相当于是or;

解法一:

额,既然知道了闭合方式,尝试构造

首先,观察,我们可以传递一个*进去,查询所有数据,如果有限制,随后在做修改;其次,我们需要将||flag给“吃掉”

于是构造出payload:qurey=*,1

即可获得flag:

image-20210601030847508

*,1说明

解法二:

playload:query=1;set sql_mode=pipes_as_concat;select 1

说明:

PIPES_AS_CONCAT:将“||”视为字符串的连接符号,而不是操作符号,这个和Oracle数据库是一样的,也和字符串拼接函数Concat相似。

注意:这里的payload不能拆分,单独执行

image-20210601035141232

因为,select 99和两个ARRAY,足以说明已经将||视为连接符号

反思:

哇,由于以前做的题类型,都是对限制条件进行注入和绕过,还没有做过注入,所以,想也想不到是构造查询的列。

再加上,对于我来说,第一步,必然是找闭合方式,如果闭合方式找不到,也就没法做题了(只是对我来说),别说盲注什么的了,就连下一步的勇气都没了。

参考:https://blog.csdn.net/weixin_44866139/article/details/105857487

标签:语句,BUUCTF,Flag,闭合,EasySQL,flag,查询,SUCTF2019,select
来源: https://www.cnblogs.com/upstream-yu/p/14835471.html