[GYCTF2020]Blacklist1

提示

  1. 堆叠注入
  2. 当select被禁用时handler的使用

这里随便输入union select,  他直接给出了黑名单

其实这一题我看到的第一反应是基于布尔的盲注

原因:

  1. 没有禁用ascii  substr  之类的,  并且输入1和0时输入1会有回显0不会
  2. 这里将预编译注入、联合注入、报错注入、都过滤的干净

通过它给出的黑名单考虑可用的命令

可尝试的

  1. 堆叠注入例如show database和show tables
  2. handler命令
  3. 基于布尔的盲注(通过1^0^1,真假真为假,1^1^1,真真真为真,来做手段)              !! 这里后面会排除掉,应为后面才想起来select被禁了,但是查询需要用所以排除!!

首先尝试

直接show tables找到flag所在的表

1';show tables;#

这里找到表FlagHere

这里尝试使用handler打开表并读取数据

handler:

诺select 被禁用handler可以替代 (handler+[table_name]+open)先将表打开(handler+[table_name]+read+[first])读取表里的第一个column将first换成next将依次向下读取

payload:1';handler FlagHere open;handler FlagHere read first;handler close;#

  • handler FlagHere read first用于读取表的第一个数据,将first改为next,就能依次向下读取
  • handler ……close用于关闭使用handler……open打开的表。

成功获取flag

13.2.3. HANDLER语法_MySQL 中文文档 (mysqlzh.com)

HANDLER语句提供通往表存储引擎接口的直接通道。HANDLER可以用于MyISAM和InnoDB表。

HANDLER...OPEN语句用于打开一个表,通过后续的HANDLER...READ语句建立读取表的通道。本表目标不会被其它线程共享,也不会关闭,直到线程调用HANDLER...CLOSE或线程中止时为止。如果您使用一个别名打开表,则使用其它HANDLER语句进一步参阅表是必须使用此别名,而不能使用表名。

如果被指定的索引满足给定的值并且符合了WHERE条件,则第一个HANDLER...READ语法取出一行。如果您有一个多列索引,则指定索引列值为一个用逗号隔开的清单。既可以为索引中的所有列指定值,也可以为索引列的最左边的前缀指定值。假设一个索引包括三个列,名称为col_a, col_b,和col_c,并按此顺序排列。HANDLER语句可以为索引中的所有三个列指定值,或者为一个最左边前缀中的各列指定值。举例说明:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪兽不会rap_哥哥我会crash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值