iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0

在 CTF 中,Hash 算法是非常常見的基礎知識之一。

它不是一種加密,而是一種單向的不可逆運算

什麼是 Hash?

  • Hash:將任意長度的輸入資料,透過演算法轉換成固定長度的輸出值。
  • 這個輸出值通常稱為 雜湊值 (hash value)。
  • 特性:
    • 固定長度:無論輸入多大,輸出長度固定。
    • 單向性:無法由雜湊值直接還原原始資料。
    • 敏感性:輸入只要改變一點點,輸出就會完全不同(雪崩效應)。
    • 抗碰撞性:理想狀況下,不同輸入不會得到相同輸出。
  • 用途:
    • 資料完整性驗證
    • 密碼儲存
    • 數位簽章與驗證

常見 Hash 演算法

  1. MD5
    • 輸出長度:128 bits(32 個十六進位字元)
    • 已被證明存在碰撞,但在 CTF 題目中仍常出現。
  2. SHA 系列
    • SHA-1:輸出 160 bits,現在已不安全。
    • SHA-256:輸出 256 bits,安全性更高,常用於區塊鏈與驗證。
  3. 其他 Hash
    • CRC32:常見於檢測或校驗數據傳輸。
    • Keccak / SHA-3:新一代標準,安全性更強。

Python 操作 Hash

import hashlib

# md5
print(hashlib.md5(b"hello").hexdigest())

# sha1
print(hashlib.sha1(b"hello").hexdigest())

# sha256
print(hashlib.sha256(b"hello").hexdigest())

CTF 常見應用

  • 破解弱密碼 Hash(字典攻擊、彩虹表)
  • 驗證檔案完整性
  • 找碰撞 (Collision)

ok了解之後,今天來看一題簡單的題目!

picoCTF - hashcrack

這題標題就表明了是要破解hash

我們可以上網查可以破解的工具!我用的是 https://crackstation.net/

使用方法很簡單,只要把題目給的hash丟進去破解就能獲得原本的輸入資料了

https://ithelp.ithome.com.tw/upload/images/20250906/20169105rSjbsOhCY3.png

把三個都拿去做破解,把解出來的結果輸入回去,就能獲得flag了!

https://ithelp.ithome.com.tw/upload/images/20250906/20169105jwlEgIlnhH.png

(可以看到這裡的輸入都很短很簡單所以可以破解出原本的輸入)


以上就是有關今天Hash的內容!,明天會進入Forensics的領域喔
想看更多,歡迎明天再來ㄛ~


上一篇
Day 10 - RSA
系列文
一天一題picoCTF:從Easy開始的新手生活11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言