iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,存在一個搜尋框和按鈕,並有描述寫是笑話「資料庫」,但並沒有 sourcecode 超連結可以查看後端程式碼
    • Imgur
  • 嘗試輸入 A 提交和重新整理,發現每次都會隨機顯示三則笑話,且上方有看似亂碼的長字串,猜測是透過 LIMIT 限制至多三筆資料
    • Imgur
    • Imgur
  • ?query= 後面的字串清空,得到錯誤訊息 "Zero padding found instead of PKCS#7 padding",猜測是區塊加密法
    • Imgur
  • 透過 CyberChef 解碼,發現若每次 query 輸入不變則結果相同但不可讀
    • Imgur
  • 使用 Python 自行撰寫腳本枚舉不同長度 A 的輸入
    • Imgur
  • 觀察結果發現每 16 次會增加 32 hex 的相同字串,且有多組重複區塊,因此猜測是 ECB mode 且區塊大小為 32 hex = 16 bytes;而輸入 AAAAAAAAAAA (11 個 A) 時會產生新的區塊,得知 padding 長度為 10 bytes
    • Imgur
    • Imgur
  • 經過測試後發現輸入 AAAAAAAAAA' (10 個 A) 同樣為 5f22a727f625419a466f9af53891f9b2,而 AAAAAAAAA' (9 個 A) 為 16276a702e32b177475d890ddad5ce65,因此猜測網站有轉譯特殊字元成 \',導致 AAAAAAAAAA\ (10 個 A) 將 ' 擠到下一個區塊
  • 可參考 Day 0x02 Natas Level 0 → Level 1 的方法,透過 Burp Suite 的 Proxy 攔截封包並 Send to Repeater,獲取 AAAAAAAAAA (10 個 A) 密文,並使用 CyberChef 獲取第三個區塊 (使用者輸入開頭) 的結果
    • Imgur
    • Imgur
  • 構造 Payload AAAAAAAAA' UNION SELECT password FROM users #CyberChef 獲得密文
    • Imgur
    • Imgur
  • 再使用 CyberChef 替換 AAAAAAAAA\ (9 個 A) 成 AAAAAAAAAA (10 個 A) 的密文
    • Imgur
  • 將結果放進 URL 中的 query 並提交,成功獲得下題的登入密碼
    • Imgur

Note

Summary

Reference


上一篇
Day 0x1C Natas Level 26 → Level 27
下一篇
Day 0x1E Natas Level 28 → Level 29
系列文
Natas 網頁安全:從入門到放棄35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言