靶场:墨者学院
链接:https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe
打开靶场后,我们可以看到一个后台登陆页面。
好像并没有什么特别的东西。
用工具进行全站扫描,查看是否有其他页面存在。
结果我们一共扫出了三个页面,一个静态页面,两个动态页面。
排除静态页面,login.php是我们刚刚看见的后台登陆页面,我们打开这个new_list.php看看。
结果我们可以发现,一片空白,也就是说我们在向服务器请求获取页面的时候,页面没有获取成功,也就是差参数。
盲猜试试id=1,这个时候发现页面正常显示了。
猜测该注入是数字型的注入。
这个时候,我突然想起,刚刚的登陆页面,应该有跳转链接可以被点击的。于是我回到刚刚的页面,发现在登陆按钮下有个消息滑动。于是我点击了它,也到达了我们刚刚测试的这个页面。
数字型注入的判断规则
- ?id=1' 此时页面不正常。
- ?id=1 and 1=1 此时页面正常。
- ?id=1 and 1=2 此时页面不正常。
当三点同时满足的时候,判定该页面存在数字型注入漏洞。
此时开始sql注入。
注入的结果符合上面说的情况。
开始使用sqlmap跑数据库,数据表,字段名,以及数据。
1.爆破数据库
Sqlmap -u "http://219.153.49.228:43414/new_list.php?id=1" --dbs
发现此时有5个数据库。其中,mysql自带4个数据库。(不同的mysql版本自带的数据库名称有差异)
information_schema、mysql、performance_schema、sys(或者是test)。
information_schema数据库保存的是mysql服务器所维护下的其他数据库信息。
mysql数据库的作用是负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
performance_schema数据库主要用于收集数据库服务器性能参数。
Sys数据库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。
也就是说,我们需要的信息就放在mozhe_Discuz_StormGroup这个人为创建的数据库中。
2.爆破数据库mozhe_Discuz_StormGroup下的数据表。
Sqlmap -u "http://219.153.49.228:43414/new_list.php?id=1" -D mozhe_Discuz_StormGroup --tables
此时我们可以看见有个StormGroup_member的数据表。
3.爆破数据表StormGroup_member的字段名。
Sqlmap -u "http://219.153.49.228:43414/new_list.php?id=1" -T StormGroup_member --columns
我们可以看见有4个字段名。分别是id,name,password,status。
name是用户名,password对应该用户名下的密码。
4.查看数据表StormGroup_member下字段名为name和password的数据行。
Sqlmap -u "http://219.153.49.228:43414/new_list.php?id=1" -T StormGroup_member -C "name,password" --dump
输入这行命令后,sqlmap会提示你是否要加载密码字典,也就是说,数据库中的密码是被加密过的。所以我们的选择是输入n
此时可以看见有两个用户都是mozhe,一般情况下,用户名不可能重名,也就是说有个用户是被禁用了。另外一个能正常使用。当我们测试后,可以知道第一个用户被禁用,第二个用户可以正常使用。
5.密文判断
从密码中我们可以看见,最大的是f,也就是说,该密文的16进制数据。并且该密文的字符串长度为32,而MD5密文的特点就是,加密后为128位(bit),按照16进制(4位一个百16进制数)编码后,就成了32个字符。所以判断该密文是md5加密后的密文。
6.搜索在线md5解密,在解密网站上成功解出密码,登陆后,在页面即可看见flag。