CTFHub SSRF通關筆記8:數字IP Bypass 原理詳解與滲透實戰

目錄

一、SSRF

二、數字IP原理

1、IP多進制

(1)十進制整數格式 (Dword / 長整數格式)

(2)八進制格式 (Octal IP)

(3)十六進制格式 (Hex IP)

2、SSRF繞過

三、滲透實戰

1、打開靶場

2、嘗試127.0.0.1訪問flag

3、十進制繞過訪問flag

4、總結


本文講解CTFHub的SSRF數字IP繞過關卡的滲透實戰。數字IP轉換技術通過不同進制(十進制、八進制、十六進制)表示IP地址,可繞過基于字符串匹配的SSRF防御機制。實戰案例中,將127.0.0.1轉換為十進制2130706433,成功繞過黑名單攔截,獲取flag。關鍵在于利用IP格式多樣性,制造過濾邏輯與解析邏輯的差異,實現內網探測和數據訪問。防御應避免簡單字符串匹配,改用URL解析庫提取標準IP地址進行驗證。

一、SSRF

SSRF(服務器端請求偽造)的原理是攻擊者利用應用程序中發起網絡請求的功能,通過篡改請求參數(如URL),使服務器向非預期的內部或受限系統發起請求。由于請求源自受信任的服務器本身,因此能夠繞過網絡訪問控制(如防火墻),從而探測內網、訪問元數據服務或讀取本地文件,將服務器變為攻擊內網的跳板。

特點維度具體描述
本質攻擊者能夠欺騙服務器應用程序代表其向任意內部或外部系統發起非預期的網絡請求。
原理利用應用程序中代發網絡請求的功能(如圖片抓取、數據導入),通過篡改輸入參數(如URL)來控制請求目標。
請求來源請求由受信任的服務器進程發起,而非來自不受信任的客戶端網絡。這是其能繞過防御的關鍵。
核心危害繞過網絡邊界。將外部攻擊者無法直接訪問的內網資源暴露出來,使服務器成為攻擊內網的跳板代理
利用手段使用多種協議(如?http/httpsfiledictgopher)和繞過技巧(如IP進制轉換、域名重綁定、@語法歧義)來攻擊不同目標。
主要攻擊目標1.?內網應用:數據庫、緩存服務(Redis)、管理后臺。
2.?本地資源:服務器本身上的文件 (file:///etc/passwd)。
3.?云元數據:云平臺元數據服務 (169.254.169.254)。
4.?端口掃描:探測內網哪些端口開放。

二、數字IP原理

1、IP多進制

IPv4 地址本質是32 位二進制數,點分十進制(如 127.0.0.1)只是人類易讀的表示形式。根據 TCP/IP 協議規范,IP 地址還支持十進制、八進制、十六進制等數字格式,且所有網絡設備 / 服務器會自動解析這些格式為正確的 32 位 IP。

常見 IP 格式轉換(以 127.0.0.1 為例),具體轉換關系如下表所示。

IP 表示形式轉換邏輯對應格式示例說明
點分十進制4 個 0-255 的十進制數,用 “.” 分隔127.0.0.1最常用格式,易被攔截
純十進制將 32 位二進制 IP 直接轉為十進制整數2130706433無 “.”,易繞過字符攔截
八進制每個 IP 段(0-255)轉為八進制,前綴加 “0”0177.0.0.01注意:八進制數不能包含 8/9,否則解析失敗
十六進制將 32 位二進制 IP 轉為十六進制,前綴加 “0x”0x7F000001十六進制字母不區分大小寫(0x7f000001 也可)
混合進制不同 IP 段用不同進制(如前兩段十進制,后兩段八進制)127.0.00.01服務器通常也能正常解析

(1)十進制整數格式 (Dword / 長整數格式)

原理說明:這種格式將 IP 地址視為一個 32 位的整數進行計算。每個 IP 地址由 4 個字節組成,通過數學公式將這 4 個字節的數值合并為一個完整的十進制數字。

計算公式:(第一字節 × 2563) + (第二字節 × 2562) + (第三字節 × 2561) + (第四字節 × 256?)

以 127.0.0.1 為例:

127 × 16,777,216 (2563) + 0 × 65,536 (2562) + 0 × 256 (2561) + 1 × 1 (256?) = 2,130,706,433

技術特點:大多數網絡請求庫(如 curl、Python 的 requests 庫等)都內置支持識別這種數字格式,能夠自動將其轉換回標準的點分十進制格式。當應用程序檢測到這樣的純數字時,過濾系統往往無法識別其真實含義,而底層網絡庫卻能正確解析并發起請求。

(2)八進制格式 (Octal IP)

原理說明:這種格式將 IP 地址每個字節的十進制數轉換為八進制數表示。在編程語言中,八進制數通常以數字 0 開頭作為前綴標識。

轉換方法:將每個十進制字節轉換為對應的八進制數,然后用點號分隔保持 IP 地址格式,或者直接將四個字節的八進制數連接成一個長數字。

以 127.0.0.1 為例:
127 的八進制是 177,加上前綴 0 成為 0177;
0 的八進制仍然是 0;
1 的八進制仍然是 1;
最終形成 0177.0.0.1 或 017700000001

技術特點:八進制格式利用了數字表示方法的多樣性,過濾系統通常只檢測常見的十進制點分格式,而忽略了其他進制表示的可能性。

(3)十六進制格式 (Hex IP)

原理說明:這種格式將 IP 地址的每個字節轉換為十六進制數表示。十六進制數通常以 0x 前綴標識,可以保持點分格式或合并為一個完整的十六進制數。

轉換方法:將每個十進制字節轉換為對應的十六進制數,保留點號分隔符,或者將四個字節的十六進制值連在一起。

以 127.0.0.1 為例:
127 的十六進制是 7f,加上前綴成為 0x7f;
0 的十六進制是 0x0;
1 的十六進制是 0x1;
最終形成 0x7f.0x0.0x0.0x1 或 0x7f000001

技術特點:十六進制格式提供了另一種數字表示方式,進一步增加了檢測的難度。網絡庫在解析時會自動處理這些前綴標識,將其轉換回標準的 IP 地址格式。

總結來說,?這三種數字 IP 格式的共同原理是:利用 IP 地址不同表示形式之間的差異,繞過基于字符串模式匹配的簡單過濾機制,同時依賴底層網絡庫強大的自動格式轉換能力,最終實現訪問內部網絡資源的目的。這種繞過手法的有效性完全建立在"過濾邏輯與解析邏輯不一致"的基礎上。

2、SSRF繞過

數字IP(Decimal IP/Octal IP/Hexadecimal IP)的核心原理是:利用IP地址格式的多樣性,來繞過基于字符串匹配(正則表達式)的SSRF防御規則。許多應用程序的防護代碼會使用簡單的黑名單來過濾輸入,例如檢查URL中是否包含?127.0.0.1,192.168.10.172.16.?等字符串。數字IP繞過技術的本質就是,將點分十進制的IP格式轉換成其他格式,使得過濾規則無法識別,而底層的網絡請求庫卻能自動將其轉換回正確的IP地址并發起請求。

方面說明
目標繞過基于字符串匹配的SSRF過濾規則。
手段利用IP地址的多種表示格式(十進制、八進制、十六進制)。
關鍵制造過濾邏輯(簡單字符串匹配)與解析邏輯(網絡庫自動轉換)之間的差異。
利用條件底層網絡庫支持這些數字格式的自動轉換。
防御方法不要使用字符串匹配!?應使用URL解析庫提取出Host,將其解析為標準IP地址,再判斷該IP是否屬于內網網段。

三、滲透實戰

1、打開靶場

?打開關卡(?“SSRF - 數字 IP Bypass”)如下所示,,觀察頁面交互邏輯,提示信息為“這次ban掉了127以及172.不能使用點分十進制的IP了。但是又要訪問127.0.0.1。該怎么辦呢”,提示本關卡的URL對數字127和172做了過濾,不能使用10進制的IP地址。點擊打開題目,此時系統自動創建Docker環境,下圖藍色部分的URL地址就是靶場環境。

復制靶場鏈接(challenge-61733642fa1afeb0.sandbox.ctfhub.com:10800)并訪問,如下所示被重定向到了?url=_中,這提示我們此URL的參數為url。

http://challenge-61733642fa1afeb0.sandbox.ctfhub.com:10800/?url=_

2、嘗試127.0.0.1訪問flag

嘗試?url=http://127.0.0.1/flag.php,構造 “點分十進制 IP” 的 Payload,驗證是否被攔截,構造的完整URL鏈接如下所示。

http://challenge-61733642fa1afeb0.sandbox.ctfhub.com:10800/?url=http://127.0.0.1/flag.php

但是有提示**“Hack ban Intranet IP”**,效果如下所示,說明服務器已將 “127.0.0.1”等常見本地 IP的特征加入到黑名單中,這與我們在靶場開啟時的提示是一致的,故而考慮通過 “數字 IP 格式轉換” 繞過。

3、十進制繞過訪問flag

IPv4 地址本質是 32 位二進制數,除了點分十進制,還支持純十進制、八進制、十六進制等格式,服務器會自動解析為正確 IP。使用在線進制轉換工具對127.0.0.1進行進制轉換,運行結果如下所示。

若需手動驗證,按以下步驟計算:

  • 將 IP 的 4 個段(127、0、0、1)分別轉為 8 位二進制:
    127 → 01111111,0→00000000,0→00000000,1→00000001;
  • 拼接為 32 位二進制數:01111111000000000000000000000001
  • 將 32 位二進制轉為十進制:01111111000000000000000000000001?= 2130706433。

以十進制為例,用十進制2130706433代替127.0.0.1即可(?url=http://2130706433/flag.php),此時完整的URL地址具體如下所示。

http://challenge-61733642fa1afeb0.sandbox.ctfhub.com:10800/?url=http://2130706433/flag.php

將構造好的 URL 復制到瀏覽器地址欄,按下回車發送請求 —— 服務器會自動將 “2130706433” 解析為 127.0.0.1,繞過黑名單攔截,具體效果如下所示,已經成功獲取flag,滲透成功。

將獲取到的 Flag值ctfhub{f31fd5126981e9621b1432ab}復制到 CTFHub 關卡的提交框,點擊提交 ,如下所示提示 “正確”,滲透流程結束。

4、總結

總結數字IP關卡滲透流程,核心是 “利用 IP 多進制特性繞過黑名單”,關鍵在于 “準確轉換 IP 格式 + 正確構造 Payload”,具體過程如下表所示。

階段核心操作關鍵注意事項
場景識別測試點分十進制 IP 是否被攔截確認目標 IP(通常是 127.0.0.1)和資源路徑(flag.php)
IP 轉換優先轉純十進制,其次八進制 / 十六進制工具計算避免手動錯誤,八進制不包含 8/9
Payload 構造數字 IP 代入 url 參數,拼接完整 URL替換關卡實際地址,確認資源路徑和端口
請求與驗證瀏覽器訪問或 Burp 抓包發送,查看響應無響應時用 Burp 排查請求是否被攔截
Flag 獲取頁面或源代碼中搜索 flag,提交驗證路徑 / 端口錯誤時調整 Payload,重試備選 IP 格式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/98210.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98210.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98210.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中雙引號和單引號的區別(全面分析)

我在刷算法題的時候經常遇到,用了 出現警告或者使用" "直接報錯,尤其是在字符串部分(py玩家后遺癥/(ㄒoㄒ)/~~)在詳細了解后總結一下加強記憶。 總的來說在 C 中,雙引號 "" 和單引號 是完全不同…

Ubuntu20.04仿真 |iris四旋翼添加云臺相機詳述

申明: 1、本人使用的是Ubuntu20.04ros1gazeboxtdronepx4的仿真組合 2、為了使傳感器模型和飛機模型解耦合,實現不同平臺對傳感器可直接調用,本系列博文涉及的所有傳感器均不直接添加在相應平臺的sdf當中,而是通過編寫xxx_joint.…

《人工智能AI之機器學習基石》系列 第 16 篇:關聯規則與數據挖掘——“啤酒與尿布”傳奇背后的增長秘密

《人工智能AI之機器學習基石》? 專欄核心理念: 用通俗語言講清楚機器學習的核心原理,強調“洞察+ 技術理解 + 應用連接”,構建一個完整的、富有啟發性的知識體系。 引言:藏在購物車里的“讀心術” 朋友們,歡迎回到我們的AI基石之旅。 在過去的兩次探索中,我們深入…

Spring Boot 的自動配置原理

Spring Boot 的自動配置是其 "約定大于配置" 理念的核心實現,它能自動配置 Spring 應用所需的各種組件,大幅減少手動配置。下面從核心注解、加載流程、條件過濾等方面詳細講解其原理,并結合關鍵源碼說明。一、自動配置的入口&#…

谷歌云平臺(Google Cloud Platform, GCP)介紹(全球領先的云計算服務平臺,為企業和開發者提供包括計算、存儲、數據分析、人工智能、機器學習、網絡和安全等在內的全面云服務)

文章目錄**1. GCP的核心優勢****1.1 全球領先的基礎設施****1.2 強大的數據分析和人工智能能力****1.3 卓越的安全性和合規性****1.4 靈活的定價模式****2. GCP的主要服務****2.1 計算服務****2.2 存儲和數據庫****2.3 網絡服務****2.4 人工智能與大數據****2.5 安全與管理工具…

RISC-V異常機制和異常定位

不少人在調試RISC-V core時,面對異常的出現不知所措,不知道如何定位代碼問題。這里將從RISC-V異常機制以及幾個異常實例學習下。 1 異常機制 1.1 什么是異常 異常是軟件程序員不得不要深入了解的,首先在學習異常機制前,對異常要…

c++中導出函數調用約定為__stdcall類型函數并指定導出函數名稱

開發環境在Visual studio 2022版本下,為防止編譯器重命名函數名稱(會加上8等等亂七八糟的東西),我們對函數名稱進行指定:一、新建.def文件,名稱須與dll名稱相同,并放在與cpp文件相同文件夾下&am…

Vision Transformer (ViT) :Transformer在computer vision領域的應用(二)

METHOD,論文主要部分 In model design we follow the original Transformer (Vaswani et al., 2017) as closely as possible. An advantage of this intentionally simple setup is that scalable NLP Transformer architectures – and their efficient implementations –…

AI 論文周報丨紅隊測試語言模型/多視角 3D 點追蹤方法/蛋白質表示學習框架/密碼學漏洞檢測新框架……

近年來,已有若干方法嘗試從單目視頻實現 3D 點跟蹤,然而由于在遮擋和復雜運動等挑戰性場景中難以準確估計 3D 信息,這些方法的性能仍難以滿足實際應用對高精度與魯棒性的要求。 基于此,蘇黎世聯邦理工學院、卡內基梅隆大學聯合提出…

STM32 通過USB的Mass Storage Class讀寫掛載的SD卡出現卡死問題

問題描述:使用stm32cubemx生成的sdio和usb Mass Storage Class的代碼后,在USB_DEVICE\App\usbd_storage_if.c文件里面的接口調用以下函數出現卡死問題: SD_Driver.disk_initialize(0); SD_Driver.disk_read(lun, buf, blk_addr, blk_len) SD_…

Go語言中 error 接口與自定義錯誤類型的深入解析

在 Go 語言開發中,我們經常需要處理各種錯誤情況。Go 語言通過 error 接口提供了一套簡潔而強大的錯誤處理機制。然而,當涉及到自定義錯誤類型時,許多開發者會遇到一些令人困惑的問題。本文將通過一個實際案例來深入探討這個問題。 問題背景 …

字幕編輯工具推薦,Subtitle Edit v4.0.13發布:增強語音識別+優化翻譯功能

大家好呀,不知道大家有沒有做自媒體相關工作的呢,你們是不是也覺得剪輯視頻時最頭疼的往往不是畫面而是字幕,時間軸對不上、格式不兼容、需要手動翻譯,這些瑣碎工作消耗的精力甚至超過剪輯本身。 當你試遍各種在線工具卻發現要么…

【Java后端】Spring Boot 集成雪花算法唯一 ID

Spring Boot 實現基于雪花算法的分布式唯一 ID 生成器在分布式系統中,我們經常需要生成 全局唯一 ID,比如用戶 ID、訂單號、消息 ID 等。常見的方式有:數據庫自增主鍵、UUID、Redis/Zookeeper 分布式 ID 服務、百度 UidGenerator、美團 Leaf …

C語言初嘗試——洛谷

一、C數組:C 語言支持數組數據結構,它可以存儲一個固定大小的相同類型元素的順序集合。數組是用來存儲一系列數據,但它往往被認為是一系列相同類型的變量。聲明數組在 C 中要聲明一個數組,需要指定元素的類型和元素的數量&#xf…

C++八大排序

C排序算法一、概覽二、代碼實現1.冒泡排序2.插入排序3.希爾排序4.堆排序5.選擇排序6.快速排序7.歸并排序三、排序時間、空間復雜度總結排序,是C各大算法當中非常常見的一個步驟(過程),通常我們使用便捷的algorithmalgorithmalgori…

每天五分鐘深度學習:深層神經網絡的優勢

本文重點 在人工智能領域,深層神經網絡(DNN)的崛起標志著技術范式的根本性轉變。相較于傳統淺層神經網絡(如單層感知機、線性回歸模型),深層網絡通過引入多層隱藏層,實現了對復雜數據模式的深度解析與高效建模。 深層神經網絡 神經網絡中輸入層表示神經網絡的第0層,…

相機幾何 空間點到像素平面轉換

一個空間中點到像素平面轉換,需要經過1. 空間坐標系轉換到相機坐標系2. 相機坐標系下3D點到相機平面轉換3. 相機平面到像素平面轉換相機三維空間到像素平面轉換1. 3D點到相機平面轉換2. 相機平面到像素平面轉換涉及到單位的轉換,和像素原點到相機平面原點…

webpack5 vue3同一倉庫,不同命令切換項目

技術方案:手動輸入不同的命令,啟動不同項目。實現這種能力本篇文章是通過不同路由劃分,進而實現不同項目的劃分。所以簡單來說就是通過輸入不同命令行在webpack中找到不同項目的路由,進而打不同項目的包,實現項目隔離。…

PowerBI實戰-制作帶有同比及趨勢線的雙柱狀圖

一、引言 今天的PowerBI報表的制作相對有一點復雜,我們直接根據最終展示圖來講解: 可以看到,我們今天要制作的圖像需要包括以下幾點:時間維度的趨勢、兩種不同維度的數據對比、不同數據標簽的展示、不同年份間環比的標簽展示以及…

物聯網智能網關配置教程:實現注塑機數據經基恩士PLC上傳至云平臺

一、項目背景隨著制造業向智能化、信息化方向快速發展,注塑車間作為塑料制品制造的核心環節,面臨著設備協議多樣、數據孤島嚴重、系統集成困難等問題。某大型注塑企業計劃對其老舊車間進行數字化改造,實現設備數據采集、遠程監控與MES系統對接…