报错注入
0、什么是报错注入
0.1 定义:
报错注入是通过特殊函数错误使用并使其输出错误结果来获取信息的。是一种页面响应形式。
响应过程:
用户在前台页面输入检索内容后台将前台页面上输入的检索内容无加区别的拼接成sql语句,送给数据库执行数据库将执行的结果返回后台,后台将数据库执行的结果无加区别的显示在前台页面
报错注入存在基础:后台对于输入输出的合理性没有做检查
0.2 类型
1、ExtractValue函数
ExtractValue()
函数是MySQL数据库中用于提取XML数据中指定路径的值的函数。它基于XPath语法,允许用户根据特定的路径表达式从XML格式的数据中获取所需信息。以下是关于MySQL中ExtractValue()
函数的详细讲解:
1.1语法
EXTRACTVALUE(xml_data, xpath_expression)
xml_data
: 包含XML数据的字段或表达式。xpath_expression
: XPath路径表达式,用于指定要提取值的位置。
1.2 在sql注入中
在使用ExtractValue()函数时,无效的XPath表达式(xpath_expression)可能会导致报错。通过将恶意的SQL语句拼接放在xpath_expression处,可以使得该条SQL语句报错,并执行我们注入的恶意语句
例如:
SELECT * FROM users WHERE username = 'input_username' AND password = ExtractValue(1, CONCAT('username:', (SELECT database())));
1
其中payloadAND password = ExtractValue(1, CONCAT('username:', (SELECT database())));
使用了extractvalue函数,将xml数据设置为1
,xpath_expression部分设置为CONCAT('username:', (SELECT database())
此时的xpath_expression为“username: 数据库名”
,由于1
中并没有“username: 数据库名”
因此会产生报错,可以从报错结果中看到我们想要的数据库名