BUU实战笔记——[GYCTF2020]Blacklist 1

题目:[GYCTF2020]Blacklist 1
在这里插入图片描述
类型:SQL注入

测试

  1. 这个给的是一个单选框,通过输入的数字会对应返回一个数组,这里有回显的信息,就可以尝试在1的后面加一个’观察闭合的情况。
    在这里插入图片描述
    发现有报错说是存在SQL语法错误,因此可以判断此处存在SQL注入漏洞。
  2. 接着利用联合注入进行测试1' union select 1,2,3#
    在这里插入图片描述发现存在利用正则写的黑名单,尝试利用大小写,双写等操作均无法成功绕过,因此尝试堆叠注入

堆叠注入

  1. 先简单解释下堆叠注入的原理:因为mysql数据库中的SQL语句基本上都是以;作为结束的标志的,因此可以通过;作为分割符同时执行多条SQL语句。但是这里需要注意堆叠注入的条件是比较苛刻的,除了基本的存在SQL注入的漏洞、黑名单没有过滤掉;,最重要的是后端代码必须含有如mysqli_multi_query函数类似的可以调用多条SQL语句执行的函数,否则堆叠注入将无法执行。
  2. 那么我们可以利用简单的语法去尝试查看数据表:1';show tables;在这里插入图片描述
  3. 这里成功发现存在一个FlagHere的表,接下来就是爆出其中的列和字段了1’;show columns from FlagHere;在这里插入图片描述
    发现列名,但是字段数并没有显示出来,这里由于select被过滤,无法直接读出数据,因此要考虑其他的方法讲数据读出。

Handler命令

  1. HANDLER语句提供通往表的直接通道的存储引擎接口,可以用于MyISAM和InnoDB表。也就是说Handler命令也可以像select一样进行查询,基本的语法可以参考SQL注入之Handler命令和堆叠注入这篇大佬的文章。
  2. Handler只需要知道数据表就可以完成字段的获取,构造的payload为1’;Handler FlagHere open;Handler FlagHere read first;Handler FlagHere close;
    在这里插入图片描述

总结

这题主要考察的是绕过黑名单,当select被过滤之后我们应该考虑其他方法进行查看,这里是利用了堆叠注入,我们需要注意堆叠注入的条件以及当没有select时可以采用Handler命令进行查询

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

muzzert

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

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

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

打赏作者

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

抵扣说明:

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

余额充值