SQL-LABS 01-06

series-1

拿到一个全新的题目,首先想到的就是进行常规的id传参

传参成功,接着判断id是否存在注释符防止注入漏洞

经过尝试后注释掉前后注释符,接着判断id是否被插入到sql语句中使用

可以看到,1=1时正常返回,1=2时返回错误,说明存在注入点,接下来利用order by判断字段数

依次尝试最后发现,1 2 3可行,4不可行,错误提示找不到编号为4的字段,说明一共有三个字段,接着判断联合查询输出的对应字段

接着爆破数据库名

接着爆破数据库中所有表名

得到表名判断用户名和密码等敏感数据应该存在于users表中,爆破users表中的所有字段

得到users表中所有字段,看到了username和password两个字段,对其中数据进行爆破,得到所有账号密码

sreies-2

第二关开始也是常见的id传参、判断是否存在注释、是否存在注入点,惊喜的发现不存在注释

经过判断发现,id不存在注释,并且存在注入点,再利用order by查询字段数

同样发现,order by查询到4时返回错误,说明一共有三个字段,同样查询字段输出位置

得到库名

查询得到所有表名

image-20211105084028530

查询users表得到所有字段名

查询username和password字段得到所有敏感数据

series-3

第三关同样进行基础排查,在排查注释符时首次出现了括号注释,前面两道题做的有些思维定式,卡了好久才想到排查括号注释。

接着判断存在注入点,order by查询字段数(有了前两题的经验,直接尝试是否存在四号字段

联合查询得到字段输出位置(注意联合查询时使用错误的id,最好为-1,第一次查询时忘了改id一度以为搭建的网站出了问题、、、

先得库名,再得表名

这里记录一下查询表名的另一种写法

查询users表中字段名,这里曾经想过用语句代替具体表名,最后发现没有办法查询单一表名(也没有意义

得到敏感数据

series-4

第四关同样存在括号注释,这次思维就比较活跃了,想到了单双引号的问题

继续尝试order by 4查询四号字段无果

查询字段输出位置(这次记得改-1了,,,

先库后表

查users表中字段(记得table_name时users加单引号标注,忘记两次了,,,

得到敏感数据

series-5

常规查询

傻掉了,,,

但是应该还是能判断注释情况的,毕竟普通id传参不可能有问题

遭不住了,上网查询发现是布尔盲注

布尔盲注

布尔盲注一般是在网页没有报错,回显的时候使用。只能对url输入的判断一个对错,一般一次只能判断一个英文字符。

布尔盲注可以分开理解,理解为基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。比如对参数加一个’ and ‘1’=‘1和’ and ‘1’='2,如果第一个能查询出来,第二个不行,则说明可以注入,继续查询可以使用and exist()继续猜测。

布尔盲注的后台sql语句为

sql="SELECT∗FROMusersWHEREid=’id’ LIMIT 0,1";

布尔盲注操作语句

1.判断数据库长度
?id=1’ and length(database())=8-- -
返回正常,证明库的长度位八个字节 -- -把后面的 ’ 注释掉

2.判断数据库中的第一个字符
/?id=1’ and left(database(),1)<‘t’’ 用 ’ 与后面的单引号闭合
Left() 判断库的第一位是否小于t,返回正常说明首字母小于t
/?id=1’ and left(database(),1)>‘r’-- -
3.返回正常,首字符位s,依次判断
?id=1’ and ascii(substr((select database()),2,1))>100 -- -
?id=1’ and ascii(substr((select database()),2,1))<102 -- -
判断库的第二位是什么(使用ascii判断) 证明是e
库名为security

4.爆security中的表名
ascii(substr((select table_name from information_schema.tables
where table_schema=‘security’ limit 0,1),2,1))<109
?id=1’ and exists(select group_concat(table_name) from information_schema.tables where table_schema=‘security’ -- -
ascii(substr((select table_name from information_schema.tables
where table_schema=‘security’ limit 0,1),2,1))<109
依次类推,得到所有的表为emails,referers,uagents,users

5.爆字段名
?id=1 and ascii(substr((select column_name from information_schema.columns where table_name=‘users’ and table_schema=‘security’ limit 0,1),1,1))<106%23
依次类推,得到users的表username的值为Dumb。

学会布尔盲注后,或许题目会变得简单

首先猜测数据库名长度,这里直接猜8,,,

接着猜测数据库名第一个字母,用同样的句式猜测整个库名

接着猜测每一个表名


接着猜测每一个字段名


接着猜测字段中数据,得到答案

series-6

同样进行基本排查,发现第六关是双引号闭合,并判断出字段数为4

使用布尔盲注用到的函数判断库名长度,并猜出库名

用substr函数判断库中每一个字母

继续用相同语句猜表名和字段名,最终得出数据。

posted @ 2021-11-05 19:49  oblivion_Zzz  阅读(67)  评论(0)    收藏  举报