判断是否存在注入点
发现页面显示有问题,可能存在注入点
判断注入点类型
由报错信息可以看出,输入参数多了一个',初步判断是单引号字符型注入
由接下来的两步可以确定是单引号字符型注入
猜测字段数(order by)
猜测当前表中有3列
判断数据显示位置(利用union select)
注意:我们构建union select语句时,当前面的查询语句为假,也就是数据不存在时,union select之后查询出的结果就会显示在页面中。这里我们可以通过在前面查询语句中添加 and 1=2 使语句变假,也可以直接将id传入一个负数,来使语句变假。
如图可以看出显示字段为2,3
信息收集
数据库名:database();
数据库用户:user();
操作系统版本:@@version_compile_os;
数据库版本:version();
数据库路径:@@datadir;
得到
数据库名:security;
数据库用户名:root@localhost;
操作系统版本:Win64;
数据库版本:5.7.26;
数据库路径:E:\site\phpStudy_64\phpstudy_pro\Extensions\MySQL5.7.26\data\;
通过指定数据库名得到库中表名
security数据库中有emails,referers,uagents,users四张表
group_concat函数能将相同的行组合起来
注意:information_schema.tables中表示数据库名的列名为table_schema
information_schema数据库中存储所有数据库名的表名为SCHEMATA
通过指定表名得到表中列名
security数据库users表中列有id,username,password
得到数据
得到用户名和密码!!!