CDDC CTF 2023 紀錄

前言 這篇紀錄參加 CDDC CTF 2023 初賽及新加坡決賽,以及過程中發生的趣事。 感謝 Zeze 的邀約,以及企業 TeamT5 與 ST Engineering 的贊助。 某天 Zeze 問我要不要來打 CDDC,看了一下發現決賽可以去新加坡耶,當然好,後續知道另外兩位隊友是 nella17 跟 ETT。 初賽 這次初賽是 Jeopardy 的形式共 36 小時的競賽,題目系統是使用的是主辦方自行開發的系統,題目上除了有題 QRcode restore 要猜 flag 跟某題 Reverse 外,都相對正常。 競賽開始,首先我去看 Web 的題目,題目網址的 https 憑證怪怪的,都無法用瀏覽器正常存取到,然後又有設 HSTS,但最後直接用 ip 去存取 http 就解決了,解題的過程中看到了一題有關 CVE-2023-29017 的 web 題,跑了 poc 下去後就有 flag 了(?,搶到一題 web 的首殺><。 另外有一題 db 用 Edgedb 的 web 題,卡了好久,把各種文檔跟原碼看過一遍了還是沒看到突破口,最後發現可以開 Hint 後,是 CVE-2023-24329 的題目(主辦方好喜歡出 CVE 的題),大概 10 分鐘左右就把這題收掉了 w,浪費好多時間 qq...

June 25, 2023 · 3 min · Vincent55

AIS3 pre-exam 2023 Writeup

前言 這次打了個第 8 名,但這次暑假有事情了,不能去 qq。 Web Login Panel app.post("/login", recaptcha.middleware.verify, (req, res) => { const { username, password } = req.body; db.get( `SELECT * FROM Users WHERE username = '${username}' AND password = '${password}'`, async (err, row) => { if (err) return res.redirect(`https://www.youtube.com/watch?v=dQw4w9WgXcQ`); if (!row) return res.redirect(`/login?msg=invalid_credentials`); if (row.username !== username) { // special case return res.redirect(`https://www.youtube.com/watch?v=E6jbBLrxY1U`); } if (req.recaptcha.error) { console.log(req.recaptcha.error); return res.redirect(`/login?msg=invalid_captcha`); } req.session.username = username; return res....

June 24, 2023 · 4 min · Vincent55

AIS3 pre-exam 2022 Writeup

前言 這次打了個第 14 名,成功拿到 AIS3 的門票 ouob 希望這次是實體的。 Web Poking Bear 首先觀察到 SECRET BEAR id 位於 350 和 777 之間,因此寫個 script 找到 SECRET BEAR 的 ID import requests url = 'http://chals1.ais3.org:8987/bear/{}' for i in range(350,777): r = requests.get(url.format(str(i))) if "This is not even a bear." not in r.text: print(str(i)) 之後存取該 url 後改個 cookie 即可拿到 flag Simple File Uploader 首先觀察到將副檔名改為 pHp 即可繞過,因此檔名為 poc.pHp。 內容則利用 splitline 大大的工具 phpFuck 將 backdoor 混淆,上傳後即可 RCE...

June 26, 2022 · 3 min · Vincent55