sql盲注

sql盲注

目录

什么是盲注
盲注原理
盲注分类
如何盲注

什么是盲注

当我们进行sql注入时,若向服务器发送的请求正确时,服务器会正常返回正确的数据;如果我们的请求是错误的,服务器不会返回任何信息。

盲注原理

盲注是我们向服务器发送一个逻辑判断请求,通过对返回值的真或假来分析数据库的结构和获取数据库的数据。

盲注分类

基于布尔的盲注
基于时间的盲注

如何盲注

以获取当前数据库名来介绍盲注步骤,获取其他数据与当前类似。

靶场:sqli-lab/less-8

1.在正确的参数后面加上’ 、" 、\ 、( 、)等字符来判断本次注入类型是数值型还是字符型,本次注入为单引号包裹的字符型

2.构造payload

基于布尔

查找数据库名的第一个字符
and ascii(substr(database(),[n],1)) =[ascii码] --+
payload中[]包裹的参数均是变化的,n表示第几个字符,ascii码表示第n个字符对应的ascii码
也可以不用ascii码判断,直接使用字符,例如 and ascii(substr(database(),1,1)) =‘A’ --+

基于时间

and if(ascii(substr(database(),[n],1))=[ascii码],sleep(3),0) --+
本句payload的含义为如果值正确,则延迟3秒返回结果,否则返回0(false)
sql语句中的if语句
if()

3.遍历
3-1 .数据库的命名规则中规定,数据库名中只能包含字母(包括大小写)、数字和下划线,所以要获取数据库名的第一个字符,我们要依次将这些字符的ascii码传入数据库,直至正确
3-2.确定第一个字符后,我们要修改n的值,来获取其他字符

可以使用 and length(database())=m --+ 来确定n的范围
sql语句中的if语句:if(条件表达式,语句一,语句二)
if语句含义为如果条件表达式为真,则执行语句一,否则执行语句二

手动盲注还是比较麻烦, 我们构造好payload之后可以使用burp来进行爆破,或者直接使用sqlmap自动化工具进行注入。

你可能感兴趣的:(笔记,sql)