一、SQL注入渗透与攻防
1. SQL注入之前言
1)SQL注入概述
- SQL注入定义
- SQL注入定义: SQL注入是一种通过操纵SQL查询来访问、修改或删除数据库数据的攻击手段。
- SQL注入场景
- 场景举例:
- 查询数据: 如在网站应用中通过select语句查询用户信息。
- 删除数据: 如后台管理中通过delete语句删除文章或用户。
- 插入数据: 如在网站应用中通过insert语句添加新用户。
- 场景举例:
- SQL注入类型
- 注入类型: 根据功能的不同,SQL语句的语法也会有所改变,对应的SQL注入方式也会有所变化。
2)SQL注入与功能语句
- 功能语句与注入
- 功能语句:
- 查询: select * from user where id=1;
- 删除: delete from user where id=1;
- 插入: insert into user (id, name, pass) values (1, 'zhangsan', '1234');
- 注入影响: 不同的SQL语句在执行时,若存在注入点,攻击者可以利用该点进行数据操纵。
- 功能语句:
3)无回显注入与盲注
- 无回显注入
- 无回显原因: 当SQL语句查询方式导致没有数据回显时,可能是因为查询语句本身不返回数据或页面不显示查询结果。
- 盲注定义与分类
- 盲注定义: 盲注是指在注入过程中,获取的数据不能显示到前端页面,需要通过其他方式判断或尝试。
- 盲注分类:
- 基于布尔的SQL盲注: 利用逻辑判断,如regexp、like、ascii、left、ord、mid等函数进行注入。
4)报错注入
- 报错注入概述
- 报错注入定义: 在没有回显点的情况下,通过构造特定的SQL语句使数据库报错,从而获取数据库信息。
- 报错注入示例
- 示例语句:
- union select 1,extractvalue(1,concat(0x7e,(select version())))#
- updatexml(1,concat(0x7e,database()),0) or
- 作用: 通过报错信息获取数据库版本、库名等信息,为后续的注入攻击做准备。
- 示例语句:
5)注入过程中的数据操作
- 数据插入与回显
- 数据插入: 如执行insert into tl values(2,'wangwu', 2345);语句插入数据。
- 回显与状态:
- 查询回显: 如执行select * from tl where id=1;语句时,数据会显示到前端页面。
- 插入状态: 执行插入语句时,页面通常只显示操作成功或失败的状态,而不显示具体数据。
- 无回显情况下的处理
- 无回显问题: 当执行插入等不返回数据的语句时,页面无回显,无法进行直接的情报收集。
- 处理方法: 此时可利用报错注入等方式,通过构造特定语句获取数据库信息。
2. SQL注入之查询方式
1)基于报错的SQL盲注-报错回显
- 函数解析
- extractvalue updatexml函数介绍
UPDATEXML()和EXTRACTVALUE()都是 MySQL 中用于操作 XML 数据的函数,它们分别用于更新 XML 数据中的内容和提取 XML 数据中的值。以下是这两个函数的详细介绍:1. UPDATEXML() 函数
UPDATEXML()是 MySQL 中用于修改 XML 数据的函数。它通过指定一个 XPath 表达式来定位 XML 中的节点,并将该节点的值更新为提供的新值。语法:
UPDATEXML(xml_doc, xpath_expr, new_value) -
xml_doc:要更新的 XML 文档,通常是一个包含 XML 数据的列或 XML 字符串。
-
xpath_expr:XPath 表达式,用于指定要更新的节点。
-
new_value:要更新的新值,用来替换 XPath 表达式所匹配的节点的内容。
-
返回值:
-
如果更新成功,返回更新后的 XML 文档。
-
如果指定的 XPath 表达式没有找到匹配的节点,或者发生了其他错误,则返回
NULL。 -
示例:
假设有以下 XML 数据:
<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>29.95</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>修改价格: 假设我们要将
category="fiction"的书籍的price更新为25.00。SELECT UPDATEXML( '<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>29.95</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>', '//book[@category="fiction"]/price', '25.00' ) AS updated_xml;返回结果:
<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>25.00</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>在这个例子中,
UPDATEXML()函数将category="fiction"的书籍的价格更新为25.00。
2. EXTRACTVALUE() 函数
EXTRACTVALUE()是 MySQL 中用于从 XML 文档中提取值的函数。它通过指定一个 XPath 表达式来定位 XML 中的节点,并返回该节点的文本值。语法:
EXTRACTVALUE(xml_doc, xpath_expr) -
xml_doc:要提取值的 XML 文档,可以是一个包含 XML 数据的列或 XML 字符串。
-
xpath_expr:XPath 表达式,用于指定要提取值的节点。
-
返回值:
-
如果 XPath 表达式匹配到一个节点,返回该节点的文本内容。
-
如果没有找到匹配的节点,返回
NULL。 -
示例:
假设有以下 XML 数据:
<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>29.95</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>提取书籍的价格: 如果我们想提取
category="fiction"的书籍的价格,可以使用如下查询:SELECT EXTRACTVALUE( '<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>29.95</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>', '//book[@category="fiction"]/price' ) AS price;返回结果:
29.95在这个例子中,
EXTRACTVALUE()函数从 XML 文档中提取了category="fiction"的书籍的价格,即29.95。
3.
UPDATEXML()与EXTRACTVALUE()的区别特性 UPDATEXML()EXTRACTVALUE()功能 用于更新 XML 文档中的节点内容。 用于从 XML 文档中提取节点的文本值。 返回值 返回更新后的 XML 文档。 返回提取的节点文本值。如果没有匹配的节点,返回 NULL。使用场景 适用于需要修改 XML 数据的场景。 适用于从 XML 文档中提取数据的场景。 XPath 表达式 支持通过 XPath 表达式来定位需要更新的节点。 支持通过 XPath 表达式来定位需要提取的节点。 示例 UPDATEXML(xml_doc, '//book/price', '25.00')修改价格为25.00。EXTRACTVALUE(xml_doc, '//book/price')提取价格信息。4. 总结
-
UPDATEXML()函数用于在 XML 文档中修改指定节点的内容。通过指定 XPath 表达式和新值,UPDATEXML()可以更新 XML 文档中的某个节点的值。 -
EXTRACTVALUE()函数用于从 XML 文档中提取指定节点的文本值。通过指定 XPath 表达式,EXTRACTVALUE()可以从 XML 数据中提取特定的信息。 -
这两个函数对于处理存储在 MySQL 中的 XML 数据非常有用,分别适用于修改和提取 XML 文档中的信息。
- XPath语法简介
XPath(XML Path Language)是用于在 XML 文档中查找信息的语言。XPath 允许你在 XML 文档中遍历节点、筛选节点以及对 XML 文档中的数据进行操作。它是许多 XML 相关技术的基础,如 XSLT(可扩展样式表转换)、XQuery 和许多数据库查询工具(如 MySQL 的
UPDATEXML())。XPath 提供了一种简洁的方法来查找和操作 XML 文档中的节点。
1. 基本语法
XPath 表达式通过路径选择符来访问 XML 文档中的节点,路径由斜杠
/分隔。XPath 语法主要包括以下几个部分:1.1 路径语法
-
/:从根节点开始选择。 -
//:从文档的任意位置选择,表示"查找所有匹配的节点"。 -
.:当前节点。 -
..:当前节点的父节点。 -
@:选择属性节点。 -
1.2 选择节点的基本方式
-
选择根节点:
/从根节点开始选择。-
例:
/bookstore选择根节点下的bookstore元素。
-
-
选择子节点:
/用于选择当前节点的直接子节点。-
例:
/bookstore/book选择bookstore元素下的所有book元素。
-
-
选择所有后代节点:
//用于选择文档中任意位置的后代节点。-
例:
//book选择文档中所有的book元素。
-
-
选择当前节点:
.代表当前节点。-
例:
./price选择当前节点的子节点price。
-
-
选择父节点:
..代表当前节点的父节点。-
例:
../bookstore选择当前节点的父节点下的bookstore元素。
-
-
1.3 选择属性节点
-
@用于选择属性。-
例:
/bookstore/book/@category选择book元素下的category属性。 -
例:
//book/@category选择文档中所有book元素的category属性。
-
-
2. XPath 条件筛选
XPath 还允许通过条件筛选特定的节点。筛选条件通常放在方括号
[]中。2.1 根据节点值筛选
-
node_name[text()='value']:选择具有特定文本值的节点。-
例:
/bookstore/book[price='29.95']选择price值为29.95的book元素。
-
-
2.2 根据属性值筛选
-
@attr_name='value':选择具有特定属性值的节点。-
例:
/bookstore/book[@category='fiction']选择category属性为fiction的book元素。
-
-
2.3 使用逻辑运算符
可以结合多个条件使用逻辑运算符(如
and、or)来进行筛选。 -
例:
/bookstore/book[price<30 and @category='fiction']选择price小于30且category为fiction的book元素。 -
2.4 选择位置节点
-
[position()]:选择特定位置的节点。-
例:
/bookstore/book[1]选择bookstore下的第一个book元素。 -
例:
/bookstore/book[last()]选择bookstore下的最后一个book元素。 -
例:
/bookstore/book[position() < 3]选择bookstore下前三个book元素。
-
-
3. XPath 运算符
3.1 算术运算符
-
+、-、*、div:执行算术运算。-
例:
/bookstore/book/price + 5计算每个book元素下price的值加 5。 -
例:
/bookstore/book/price div 2将每个book元素下price的值除以 2。
-
-
3.2 比较运算符
-
=、!=、<、>、<=、>=:比较运算符。-
例:
/bookstore/book[price>20]选择price大于20的book元素。
-
-
3.3 逻辑运算符
-
and、or:逻辑运算符。-
例:
/bookstore/book[price>20 and @category='fiction']选择price大于 20 且category为fiction的book元素。
-
-
4. XPath 函数
XPath 提供了许多函数来增强查询能力。常用的函数有:
4.1
text()text()用于选择节点的文本值。 -
例:
/bookstore/book[price>20]/title/text()选择price大于 20 的book元素的title文本。 -
4.2
contains()contains()用于检查某个字符串是否包含在节点值中。 -
例:
/bookstore/book[contains(title, 'XML')]选择title中包含 "XML" 的book元素。 -
4.3
normalize-space()normalize-space()用于移除节点文本值中的前导和尾随空格。 -
例:
/bookstore/book[normalize-space(title)='XML Book']选择title文本值为"XML Book"(去除空格后)的book元素。 -
4.4
sum()sum()函数计算节点集的总和。 -
例:
sum(/bookstore/book/price)计算所有book元素中price的总和。 -
4.5
last()last()用来选择集合中的最后一个节点。 -
例:
/bookstore/book[last()]选择bookstore下的最后一个book元素。 -
5.4 选择价格大于 30 的
book:/bookstore/book[price>30]5.5 选择第二本书:
/bookstore/book[2]5.6 选择所有
book元素的title文本:/bookstore/book/title/text()6. 总结
XPath 是一种功能强大的查询语言,用于从 XML 文档中选择和操作节点。掌握 XPath 的基础语法和常用函数可以大大提高你在处理 XML 数据时的效率。XPath 在 XML 解析、数据抽取、Web Scraping、XSLT 转换等场景中具有广泛的应用。
5. XPath 示例
假设有以下 XML 数据:
<bookstore> <book category="fiction"> <title>XML for Dummies</title> <author>John Doe</author> <price>29.95</price> </book> <book category="technology"> <title>Learning XPath</title> <author>Jane Smith</author> <price>39.95</price> </book> </bookstore>5.1 选择所有
book元素:/bookstore/book5.2 选择所有
price元素:/bookstore/book/price5.3 选择
category为fiction的book:
/bookstore/book[@category='fiction']
- extractvalue updatexml函数介绍
-
- XML文档与数据库文件读取
- XML文档结构
-
在数据库中处理 XML 数据,可以通过多种方式读取和操作 XML 文档。具体的实现取决于你使用的数据库系统,以及 XML 数据存储的方式(例如,存储为字符串类型、XML 类型列等)。以下将介绍如何在数据库中读取存储的 XML 数据,以及如何将 XML 文档从外部读取到数据库中。
1. XML 文档在数据库中的存储方式
数据库中可以以不同的方式存储 XML 数据:
-
作为字符串:XML 数据可以作为普通的文本或字符串存储在数据库的
VARCHAR、TEXT等字段中。 -
作为 XML 数据类型:一些数据库(如 SQL Server、MySQL、PostgreSQL 等)支持专门的 XML 数据类型。这种方式允许你存储 XML 数据并对其执行 XPath 查询、XQuery 等操作。
-
2. 在 MySQL 中处理 XML 数据
2.1 存储 XML 文档为字符串
假设你有一个 XML 文档,你可以将其存储在数据库中的某个字段中。首先,创建一个包含 XML 数据的表。
CREATE TABLE xml_data ( id INT AUTO_INCREMENT PRIMARY KEY, xml_content TEXT );然后将 XML 文档存储在
xml_content字段中。INSERT INTO xml_data (xml_content) VALUES ('<bookstore><book><title>XML for Dummies</title><author>John Doe</author><price>29.95</price></book></bookstore>');2.2 读取 XML 字符串并查询
你可以使用
EXTRACTVALUE()或UPDATEXML()等 MySQL 函数对存储的 XML 字符串执行 XPath 查询。例如,提取
price的值:SELECT EXTRACTVALUE(xml_content, '//book/price') AS price FROM xml_data WHERE id = 1;2.3 读取 XML 数据类型字段(如果支持)
在一些支持 XML 数据类型的数据库系统中(如 SQL Server、PostgreSQL 以及 MySQL 5.6 及之后的版本),你可以直接使用 XML 数据类型字段。例如,在 MySQL 中,可以使用
XML数据类型存储 XML 数据,或者将其转换为合适的格式进行处理。首先,创建一个表,并使用
XML数据类型(如果使用支持的数据库)。CREATE TABLE xml_data ( id INT AUTO_INCREMENT PRIMARY KEY, xml_content XML );然后,插入 XML 数据:
INSERT INTO xml_data (xml_content) VALUES ('<bookstore><book><title>XML for Dummies</title><author>John Doe</author><price>29.95</price></book></bookstore>');读取 XML 数据:
SELECT xml_content FROM xml_data WHERE id = 1;2.4 使用 XPath 查询 XML 数据
如果数据库支持 XML 数据类型,你还可以在查询中使用 XPath 查询。例如:
SELECT EXTRACTVALUE(xml_content, '//book/price') FROM xml_data WHERE id = 1;3. 在 SQL Server 中处理 XML 数据
SQL Server 提供了 XML 数据类型,使得处理 XML 文档变得更简单和高效。
3.1 存储 XML 数据
你可以将 XML 文档存储为
XML数据类型。CREATE TABLE xml_data ( id INT PRIMARY KEY, xml_content XML );然后插入一个 XML 文档:
INSERT INTO xml_data (id, xml_content) VALUES (1, '<bookstore><book><title>XML for Dummies</title><author>John Doe</author><price>29.95</price></book></bookstore>');3.2 查询 XML 数据
你可以使用
XML数据类型提供的.value()方法来从 XML 数据中提取内容,或使用.nodes()方法进行更复杂的查询。例如,提取
price节点的值:SELECT xml_content.value('(/bookstore/book/price)[1]', 'DECIMAL(10,2)') AS price FROM xml_data WHERE id = 1;3.3 使用 XQuery 查询 XML 数据
SQL Server 还支持 XQuery 来进行复杂的查询操作。例如:
SELECT xml_content.query('for $x in /bookstore/book/price return $x') AS prices FROM xml_data WHERE id = 1;4. 在 PostgreSQL 中处理 XML 数据
PostgreSQL 也提供了对 XML 数据的原生支持。它提供了
xml数据类型以及用于操作 XML 数据的函数。4.1 存储 XML 数据
首先,创建一个包含 XML 数据的表:
CREATE TABLE xml_data ( id SERIAL PRIMARY KEY, xml_content XML );然后,插入 XML 数据:
INSERT INTO xml_data (xml_content) VALUES ('<bookstore><book><title>XML for Dummies</title><author>John Doe</author><price>29.95</price></book></bookstore>');4.2 查询 XML 数据
你可以使用 PostgreSQL 提供的
xpath()函数从 XML 数据中提取节点。例如,提取
price节点的值:SELECT xpath('//book/price/text()', xml_content) AS price FROM xml_data WHERE id = 1;5. 读取 XML 文件到数据库
如果你的 XML 文档存储在文件中,并且希望将文件内容读取到数据库中,以下是常见的步骤:
5.1 通过脚本读取 XML 文件并插入到数据库
你可以编写脚本(例如使用 Python、PHP 或其他编程语言)读取 XML 文件并将其插入到数据库中。例如,使用 Python 和 MySQL:
import mysql.connector from lxml import etree # 连接到 MySQL 数据库 conn = mysql.connector.connect( host="localhost", user="your_user", password="your_password", database="your_database" ) cursor = conn.cursor() # 读取 XML 文件 tree = etree.parse('your_file.xml') xml_string = etree.tostring(tree, pretty_print=True).decode() # 插入 XML 数据到数据库 cursor.execute("INSERT INTO xml_data (xml_content) VALUES (%s)", (xml_string,)) conn.commit() # 关闭连接 cursor.close() conn.close()5.2 使用 SQL Server 读取 XML 文件并插入
SQL Server 也提供了读取文件并插入 XML 的方法。可以使用
OPENROWSET和BULK语句来读取文件。INSERT INTO xml_data (xml_content) SELECT * FROM OPENROWSET(BULK 'C:\path\to\your\file.xml', SINGLE_BLOB) AS xml_data;6. 总结
在数据库中处理 XML 数据有多种方式,主要依赖于数据库的 XML 支持:
-
MySQL、PostgreSQL 和 SQL Server 都支持 XML 数据类型,允许你对 XML 文档进行高效查询和操作。
-
你可以将 XML 文档存储为普通字符串(如
TEXT类型),并使用适当的函数(如EXTRACTVALUE()、UPDATEXML()等)进行查询。 -
如果需要将外部 XML 文件导入数据库,你可以使用脚本或数据库提供的功能来完成。
-
这些方法使得在数据库中存储和处理 XML 数据变得非常方便,适用于需要处理结构化数据的场景。
-
- 报错回显函数解析
- updatexml()函数
- 作用: 从目标XML中更改包含所查询值的字符串。
- 参数:
- 第一个参数:XML document,String格式,为XML文档对象的名称,文中为DOC。
- 第二个参数:XPath_string(Xpath格式字符串)。
- 第三个参数:new_value,String格式,替换查找到的符合条件的数据。
- 利用方式: 如果第二个参数不是XPath格式,则会报错,可以利用此特性进行SQL注入。
- extractvalue()函数
- 作用: 从目标XML中返回包含所查询值的字符串。
- 参数:
- 第一个参数:XML_document,String格式,为XML文档对象的名称,文中为DOC。
- 第二个参数:XPath_String(Xpath格式字符串)。
- 利用方式: 同updatexml(),如果第二个参数不是XPath格式,则会报错,可以利用此特性进行SQL注入。
- updatexml()函数
- 报错回显实例演示
- 演示环境准备
- 数据库: MySQL
- 工具: Burp Suite
- 演示步骤
- 步骤一: 启动Burp Suite,设置代理。
- 步骤二: 访问目标网站(如SQL Labs的第11关)。
- 步骤三: 提交表单,抓包分析。
- 报错注入过程
- 判断数据类型: 通过提交不同数据类型(如单引号、双引号)判断闭合符。
- 构造报错语句: 利用updatexml()或extractvalue()函数构造报错语句,获取数据库信息。
- 实例: 提交uname=mc' and extractvalue(1,concat(0x7e,database()))-- ,通过报错信息获取数据库名。
- 注意事项
- 闭合符判断: 如果不清楚闭合符,可以尝试单引号和双引号组合提交,通过报错信息判断。
- 函数选择: updatexml()和extractvalue()均可用于报错注入,根据具体情况选择使用。
- 演示环境准备
- 报错注入的应用
- 信息收集: 通过报错信息获取数据库版本、数据库名、表名、列名等敏感信息。
- 攻击扩展: 结合其他SQL注入技巧,进一步获取或篡改数据。
- 实例: 在获取数据库名后,可进一步构造语句获取表名、列名,甚至进行数据篡改。
- 报错回显函数解析
- 利用函数进行报错注入
- 报错注入原理
- 原理: 报错注入利用数据库在发生错误时返回的错误信息,通过构造特定的SQL语句使数据库报错,从而泄露数据库信息。
- 使用函数进行报错注入
- extractvalue函数
- 函数作用: extractvalue函数用于从目标XML中查询包含特定值的字符串,如果第二个参数不是合法的XPath表达式,则会引发错误并返回错误信息。
- 用法示例:
- extractvalue函数
- 报错注入原理
- XML文档与数据库文件读取
- 此语句通过concat函数将版本号与特定字符(如波浪号)拼接,如果XPath语法错误,则会返回包含版本号的错误信息。
- - updatexml函数
- - 函数作用: updatexml函数用于更新XML文档中的特定字符串,同样,如果第二个参数不是合法的XPath表达式,会引发错误。
- - 用法示例:
- 此语句尝试更新XML文档,由于XPath表达式错误,会返回包含数据库名的错误信息。
- 报错信息的利用
- 信息收集: 通过构造引发错误的SQL语句,可以从返回的错误信息中提取数据库的版本号、数据库名等敏感信息。
- 示例:
- 获取版本号:
- 报错信息的利用
- 返回的错误信息中包含数据库的版本号。
- - 获取数据库名:
- 返回的错误信息中包含数据库的名称。
- 注意事项
- 波浪号的使用: 在构造报错注入的SQL语句时,常在查询的字符串前后添加波浪号(~),这是为了方便后续使用自动化扫描工具进行数据处理。扫描工具通过正则表达式识别波浪号包围的内容,从而准确提取所需信息。
- limit语句的使用
- 作用: 当查询结果过多,一行显示不下时,可以使用limit语句进行分页显示。
- 用法示例:
- 注意事项
- 此语句通过limit 0,1从查询结果中获取第一个表名。
- 综合应用
- 综合查询: 通过结合使用报错注入函数和limit语句,可以逐步获取数据库中的多个表名或其他信息。
- 示例:
- 获取多个表名:
- 综合应用
- 通过修改limit语句中的偏移量和行数,可以获取不同的表名。
- updatexml函数参数解析
- updatexml函数用法
- 参数灵活性: updatexml函数的参数可以灵活修改,第一个和第三个参数不重要,重点是第二个参数,用于报错注入。
- 函数作用: 通过构造特定的SQL语句,利用updatexml函数的报错信息,可以获取到数据库中的敏感信息。
- 另一种用法
- or查询: 除了使用union select进行联合注入外,还可以使用or来进行查询注入,同样可以利用updatexml函数的报错信息获取敏感数据。
- 灵活性: 这种方法提供了更多的灵活性,可以根据实际情况选择最适合的注入方式。
- 示例: 'or updatexml(1.concat(Ox7e,database()).0)or' 可以通过这种方式构造SQL语句进行注入。
- 总结
- 核心点: updatexml函数的参数解析和报错注入的利用是关键。
- 灵活性: 函数的参数可以灵活修改,提供了多种注入方式的可能性。
- 注意事项: 在使用前需要确认目标数据库中存在该函数,并注意参数的选择和构造。
- updatexml函数用法
- or逻辑在SQL注入中的应用
- or逻辑的基本用法
- or逻辑在SQL注入中的应用
- 实战演示:利用or逻辑进行SQL注入
- 总结
- or逻辑的重要性: 在SQL注入中,or逻辑是一种非常有用的工具,可以帮助攻击者绕过安全限制,获取敏感信息。
- 安全建议: 对于开发者来说,应该加强对SQL注入的防范意识,采用参数化查询、预编译语句等安全措施来防止SQL注入攻击。同时,也需要定期对数据库进行安全审计和漏洞扫描,及时发现并修复潜在的安全漏洞。
- updatexml函数参数解析
二、知识小结
|
知识点 |
核心内容 |
考试重点/易混淆点 |
难度系数 |
|
SQL注入基础 |
SQL语句根据功能不同,语法有变化 |
SQL语句类型与功能对应关系 |
中 |
|
SQL注入类型 |
基于报错的SQL盲注 |
报错注入的原理与应用场景 |
高 |
|
函数应用 |
updateXML与extractValue函数 |
函数参数、功能及报错机制 |
高 |
|
数据类型判断 |
字符型与数字型判断 |
单引号与双引号闭合识别 |
中 |
|
联合查询与OR查询 |
利用union与or进行注入 |
两者在注入中的区别与适用场景 |
中 |
|
信息收集 |
通过报错回显收集数据库信息 |
版本号、库名、表名等关键信息获取 |
高 |
|
LIMIT用法 |
分页显示查询结果 |
limit参数设置与数据获取策略 |
中 |
|
字符串拼接 |
使用concat函数拼接字符串 |
拼接技巧与报错注入结合应用 |
中 |
1419

被折叠的 条评论
为什么被折叠?



