[TOC]

BUUCTF_Blacklist

一、进行注入检测,分析是什么类型

image-20210727154538091

image-20210727154634533

image-20210727155007154

image-20210727155126228

image-20210727155235552

image-20210727155409762

二、普通手工注入,查看过滤规则

image-20210727155656728

image-20210727155840193

order by来查询列数

image-20210727155925830

image-20210727160020855

image-20210727160118827

联合查询,查他的表名列名

发现过滤了一下关键词

image-20210727160246170

set prepare不可用,说明可能存在多行注入,

正则/ i说明不区分大小写

三、发现多行注入

以下结果说明存在多行注入,方框中的为show databases;注入结果

前面的为inject=1’;的注入结果

方框中的为show databases;注入结果

其中:

information_schema,mysql和performance_schema是系统数据库,

所以就从ctftraining,supersqli和test中找

image-20210727160708333

image-20210727161432182

image-20210727161701434

image-20210727161729684

payload:?inject=1’;Handler FlagHere open;handler%20 FlagHere read first;handler FlagHere close; %23

image-20210728132443327

总结:

先进行一个注入检测,找到它是什么类型

先来正常的手工注入,发现过滤

另辟蹊径,观察过滤类型

set prepare 被过滤说明

set @a=0xxxxx;prepare execsql from @a;execute execsql;这种方法不可用

试一下多行注入,show databases; show tables;

发现表名FlagHere,就去读取

读取的方法为:

Handler xxx open;handler xxx read first;handler xxx close;

这样就可以得到Flag了。

set @a=0xxxxx;prepare execsql from @a;execute execsql;

image-20210728133547107

image-20210728133757618

分号可用的情况下,不一定可以多行注入!

image-20210728134131167

image-20210728134216892

此时在分号可用的情况下不支持多行注入!

image-20210728134458320

image-20210728134650258