資訊安全相關內容分享

利用 Linux command 取得檔案 hash 值

Note
hash 值是經過特定的演算法,取得資料的唯一值,是不可逆的函數,也就是說無法利用 hash 值來回推原本的檔案內容。利用 hash 值的特性可以用來判斷檔案是否有異動,比較是否為相同的檔案。

之前介紹了 Windows 中取得檔案 hash 值的方式。在這邊列出幾個 Linux 上取得 hash 值的指令。

PortSwigger-檔案上傳漏洞 lab 6

Lab: Remote code execution via polyglot web shell upload

Lab 目標

  • 跟上一個lab相同,利用上傳漏洞將目標主機上/home/carlos/secret檔案內容輸出,再將輸出的內容subsmit。
  • 此 lab 會檢查檔案 header 因此需產生 polyglot web shell 來上傳。

步驟

  • 如同之前的 lab 先找到上傳後可被存取的路徑。
  • 因為此 lab 開始針對檔案 header 進行檢查,因此會發現之前幾個 lab 的手法無法使用。
  • 需要將 payload 加到圖片檔中來執行。
  • 下面指令使用 exiftool 來將 payload 加入圖片 exif 的 comment 中,並產生一個附檔名為 php 的圖片檔。kali 預設沒有安裝 exiftool,執行sudo apt install libimage-exiftool-perl來安裝。
exiftool -Comment="<?php echo ' FLAG_START ' . file_get_contents('/home/carlos/secret') . ' FLAG_END '; ?>" <image_file>.png -o payload.php 
  • 因為單純將 flag 顯示出來,會跟其他圖片檔亂碼接在一起,容易搞混,在前後分別加上 FLAG_STARTFLAG_END加以區別。
  • 將產生的payload.php上傳後,存取/files/avatars/payload.php即可取得此Lab的Flag。

補充說明

在執行 php 檔時,會從<?開始到?>結束,因此將 php code 內容放在 png 的 comment 中,再存成 .php 檔,會把其他內容當成亂碼,但執行放在 comment 的 php code。