SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!

在上一次讲解了lesson -1的sql基本注入,我们在注入的时候,它会返回错误信息
但是盲注不会:什么是盲注:我理解的盲注是,web页面并不会返回错误信息,需要自己添加一些命令来让浏览器进行一些显而易见的行为,如果发生了这些行为,我们可以认为这次是报错(或者不报错,基于自己的设定)。

通常使用if 函数来搞事情

if函数原理是当表达式1为True时,返回值为表达式二,否则返回表达式三。

基于布尔值的盲注

方法一

http://127.0.0.1/sqli/Less-8/?id=1'  and length(database())==10  ​--+

如果使用这样的呃话,我们输入的id值明明是一个正确的值,但是它会返回一个空操作.那么就说明这是一个注入点.

在这里插入图片描述

方法二,加上sleep更加直观,也是在布尔值的基础上,使用睡一下的功能.

sqli-labs lesson-8 提示了是单引号的错误,但是我们是用 ?id=1 还是?id=1’ 判断,页面返回的结果是一样的:
在这里插入图片描述
我也不知道错没错,就是不显示咯
在这里插入图片描述

无法判断出是否错误,就需要用盲注
题目8提示了,是布尔类型的盲注
在这里插入图片描述

输入命令:
if(length(database())<3,1,sleep(3))
如果数据库名的长度小于3是不正确的,那么就直接睡3s

测试一下:

闭合了单引号,这次是不用睡的.
在这里插入图片描述
在这里插入图片描述

没有闭合单引号,加载时间会很长
在这里插入图片描述
在这里插入图片描述
果然,就说明这里面存在注入点,经过不懈努力的手工注入,当if(length(database())==8,1,sleep(3)) 的时候,时间没有改变,可以判断出数据库的字符长度就是8

基于时间的盲注

lesson-9 我们把第八题的命令放上去,发现不可以用:

在这里插入图片描述

试试让 它在错误的时候睡一下:

http://127.0.0.1/sqli/Less-9/?id=1'  and if(length(database())<4,1,sleep(2)) --+

在这里插入图片描述

MySQL注入什么的还是直接sqlmap吧.掌握原理,然后会实用工具
加油.

sqlmap的使用

基于布尔的盲注:

sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique B --dbs --batch

在这里插入图片描述

基于时间的盲注(很慢):

sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique T --dbs --batch

在这里插入图片描述

当然也可以不用指定technique,但是这样会很慢,因为默认 使用各种注入算法.

–technique 参数一览表
B Boolean-based blind 基于布尔的盲注
E Error-based 报错注入
U Union query-based Union 查询注入
S Stacked queries 堆叠注入
T Time-based blind 基于时间的盲注
Q Inline queries 内联查询注入

路漫漫其修远兮,祝大家学业有成

posted @ 2021-07-24 16:12  Zeker62  阅读(53)  评论(0编辑  收藏  举报