CTF常用sql注入(二)报错注入(普通以及双查询)

0x05 报错注入

适用于页面无正常回显,但是有报错,那么就可以使用报错注入

基础函数

floor()
向下取整函数
返回小于或等于传入参数的最大整数。换句话说,它将数字向下取整到最接近的整数值。
示例:
floor(3.7) 返回 3
floor(-2.5) 返回 -3round()
四舍五入函数
将传入的数字四舍五入到最接近的整数或指定小数位数的精度。
示例:
round(3.7) 返回 4
round(3.14159, 2) 返回 3.14(保留两位小数)ceil()
向上取整函数
返回大于或等于传入参数的最小整数。与 floor() 函数相反,它将数字向上取整到比给定数字大的最小整数。
示例:
ceil(3.2) 返回 4
ceil(-1.5) 返回 -1count()
在mysql中计算行数mid()
用于截取返回结果的函数
mid((查询语句),1,32)脚标从1开始截取32个字符updatexml()
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称;
第二个参数:XPath_string (Xpath格式的字符串);
第三个参数:new_value,String格式,替换查找到的符合条件的数据;
返回内容:若xpath正确则返回更改对象名称,否则返回xpath错误内容
那么我们如果要注入的话肯定是不能让他正确返回的我们直接
updatexml(任意值,(查询语句),任意值)extractvalue()
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称;
第二个参数:XPath_string (Xpath格式的字符串);
返回内容:若xpath正确则返回目标XML查询的结果,否则返回xpath错误内容
同理即可limit的使用
返回几列中的任意一列
例如
limit 0,1返回第一列
limit 3,1返回第四列right()
right(x,y)  截取x字符串的从右边最后开始数y个字符
right函数的使用是截取字符串的右边部分left()
left(x,y)  截取x字符串的从左边最开始的开始数y个字符

普通报错注入

经过上面的函数我们直接实现即可

?sort=-1 or updatexml(1,concat(0x3d,(select schema_name from information_schema.schemata limit 5,1),0x3d),3)--+

在这里插入图片描述

依次类推查下去即可
查到flag部分发现查不完

mid函数
?sort=-1 or updatexml(1,concat(0x3d,mid((select group_concat(flag4s) from ctfshow.flags),32,32),0x3d),3)--+左右函数使用
?sort=-1 or updatexml(1,concat(0x3d,(select left(flag4s,31) from ctfshow.flags),0x3d),3)--+
?sort=-1 or updatexml(1,concat(0x3d,(select right(flag4s,14) from ctfshow.flags),0x3d),3)--+

在这里插入图片描述
在这里插入图片描述

extractvalue换一下就行

?sort=-1 or extractvalue(1,concat(0x3d,(select right(flag4s,14) from ctfshow.flags),0x3d))--+
?sort=-1 or extractvalue(1,concat(0x3d,(select group_concat(flag4s) from ctfshow.flags),0x3d))--+

双查询报错注入

知识补充

这里我们会使用group by注入来进行重要讲解

rand()函数
生成一个0~1的随机数

在这里插入图片描述

select count(*),username from user group by username;

在这里插入图片描述

select username,count(*) from user group by username;
此时group by会生成一张虚拟的表其中是key的键值对

大概是这样

keycount(*)
admin1
admin21
admin31
flag1
前面的名称呢肯定是在username这个列里面所找到的准确的值

在这里插入图片描述

select username,count(*) from user group by "username";

这个表呢

keycount(*)
username4

他不会打开列去找值而是直接填充username
由于版本问题我这里已经是无法掩饰了

那么回到正题
我们要利用联合注入来实现双查询报错注入(报错是利用的group by报错原理)
那么看上面的语句大家已经看出来了我们写句子的结构大致就是那个样子

?id=select count(*),concat(0x3d,mid((select group_concat(table_name) from information_schema.schemata)1,32),0x3d,round(rand()*2))a from information_schema.schemata group by a--+聚合函数方便能够正常响应          拼接注入语句   别名a 这个a的内容包括(子查询中查询到的所有内容)                                                                        这里from后面的内容是可以替换的                                根据a生成虚拟表

查询语句生成的大概是这样的句子,

keycount(*)
=erformance_schema,ctfshow_web=01
=erformance_schema,ctfshow_web=11
=erformance_schema,ctfshow_web=21

那么这样子的虚拟表就被生成了,
引用一个师傅的话

最后的报错是最重要的地方!重复的键值;那么为什么键值会重复呢,就是因为concat函数执行了两次,因为concat是连接两个随机字符串,当第二次执行的时候,有可能会出现与第一次键值重复的情况!那么这种情况下,就会报错!也就是:使用聚合函数,group by子句,并利用随机函数产生错误运行时,由于涉及的随机函数和聚合函数计算;当在一个聚合函数,比如count后面如果使用分组语句就会把查询的一部分以错误形式显示出来;因为concat函数执行两次,比如select database(),这样就执行了两次select database,与后面的随机函数链接在一起,可能会随机重复,就会报错;通过floor报错的方法来爆数据的本质是group by语句的报错。group by语句报错的原因是floor(random(0)*2)的不确定性,即可能为0也可能为1(group by key的原理是循环读取数据的每一行,将结果保存于临时表中。读取每一行的key时,如果key存在于临时表中,则不在临时表中则更新临时表中的数据;如果该key不存在于临时表中,则在临时表中插入key所在行的数据。group by floor(random(0)*2)出错的原因是key是个随机数,检测临时表中key是否存在时计算了一下floor(random(0)*2)可能为0,如果此时临时表只有key为1的行不存在key为0的行,那么数据库要将该条记录插入临时表,由于是随机数,插时又要计算一下随机值,此时floor(random(0)*2)结果可能为1,就会导致插入时冲突而报错。即检测时和插入时两次计算了随机数的值。结论是:当与临时表里面的值进行比较,如果不同,就插入,但是插入的时候又计算了一次,所以如果插入时计算的值与直接比较的值不一样,则报错!

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

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

相关文章

统计信号处理基础 习题解答11-12

题目 证明 的MAP估计量为 其中是一个的矢量, 是一个可逆的p*p的矩阵。也就是说,MAP估计量对可逆的线性变换是可以变换的。 解答 已知的联合概率密度 且: 现在知道: 那么为了获得变换后的MAP,首先需要根据求出 根据概率密度变换…

Linux系统部署MongoDB开源文档型数据库并实现无公网IP远程访问

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 💡 推荐 前些天发现了一个巨牛的人工智能学习网站&am…

Springboot与xxl-job

一、下载xxl-job项目 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉…

企业搭建知识库:解锁无限潜力的钥匙

在当今这个信息爆炸的时代,企业如何高效地管理、传播与利用知识,已成为衡量其竞争力的重要标尺。知识库,作为这一背景下的产物,正逐步成为企业不可或缺的数字资产。它不仅是一个自助式的数字门户,更是连接员工、客户与…

stm32定时器与pwm波

文章目录 4 TIM4.1 SysTick系统定时器4.2 TIM定时器中断与微秒级延时4.3 TIM使用PWM波4.3.1 PWM介绍4.3.2 无源蜂鸣器实现 4.4 TIM ,PWM常用函数 4 TIM 4.1 SysTick系统定时器 ​ Systick系统滴答,(同时他有属于自己的中断,可以利用它来做看…

RT-Thread Studio与CubeMX联合编程之rtthread stm32h743的使用(十一)spi设备SFUD驱动的使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图: 1.建立新工程,选择相应的芯片型号及debug引脚及调试器 2.编译下载,可以看到串口打印正常 3.…

Solo 开发者周刊 (第12期):连接独立开发者,共享开源智慧

这里会整合 Solo 社区每周推广内容、产品模块或活动投稿,每周五发布。在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解。本杂志开源,欢迎投稿。 产品推荐 1、Soju————一个现代的书签…

完全理解C语言函数

文章目录 1.函数是什么2.C语言中的函数分类2.1 库函数2.1.1 如何使用库函数 2.2自定义函数 3.函数的参数3.1 实际参数(实参)3.2 形式参数(形参) 4.函数调用4.1传值调用4.2 传址调用4.3 练习 5.函数的嵌套调用和链式访问5.1 嵌套调…

Django + Vue 实现图片上传功能的全流程配置与详细操作指南

文章目录 前言图片上传步骤1. urls 配置2. settings 配置3. models 配置4. 安装Pillow 前言 在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将…

DolphinDB 蝉联 Gartner 中国实时数据管理代表厂商

报!DolphinDB 又上榜啦!!! 上月,全球知名信息技术研究公司 Gartner 发布了 Hype Cycle for Data, Analytics and AI in China, 2024 报告,以技术成熟度曲线(Hype Cycle)和优先级矩阵…

JVM的五大内存区域

JVM的五大内存区域 JVM内存区域最粗略的划分可以分为 堆 和 栈 ,当然,按照虚拟机规范,可以划分为以下几个区域: JVM内存分为线程独享区和线程共享区, 其中 方法区 和 堆 是线程共享区, 虚拟机栈, 本地方法…

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…

云桌面运维工程师

一 深信服驻场工程师 1 深信服AC、AF、AD、NGAF、WOC Atrust、WAF项目实施经验者优先考虑。 负责云桌面POC测试 部署和配置&#xff1a;设置云桌面基础设施&#xff0c;包括虚拟化平台、云桌面管理软件和相关组件。确保正确配置网络、存储和安全设置。 用户体验&#xff1…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本&#xff0c;环境&#xff1a;k8s版本为&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

滚动表格(vue版本)【已验证可正常运行】

演示图 注&#xff1a;以下代码来自于GPT4o&#xff1a;国内官方直连GPT4o 代码 <template><div><div class"alarmList-child" ref"alarmList" mouseenter.stop"autoRoll(1)" mouseleave.stop"autoRoll()"><div…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word

TextIn Tools是一款免费的在线OCR工具&#xff0c;支持快速准确的文字和表格识别&#xff0c;手写、古籍识别&#xff0c;提供PDF转Markdown大模型辅助工具&#xff0c;同时支持PDF、WORD、EXCEL、JPG、PPT等各类格式文件的转化。 TextIn Tools特点 免费&#xff1a;所有产品提…

Mysql 的第二次作业

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 1&#xff09;登陆数据库。 打开命令行&#xff0c;输入登陆用户名和密码。 mysql -uroot -p123456 ​ 2&#xff09;切换数据库…

Git学习(常用的一些命令)

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 配置相关&#xff1a; 创建与克隆仓库&#xff1a; 基本操作&#xff1a; 分支操作&#xff1a; 远程仓库操作&#xff1a…

深度学习基准模型Transformer

深度学习基准模型Transformer 深度学习基准模型Transformer&#xff0c;最初由Vaswani等人在2017年的论文《Attention is All You Need》中提出&#xff0c;是自然语言处理&#xff08;NLP&#xff09;领域的一个里程碑式模型。它在许多序列到序列&#xff08;seq2seq&#xf…