雖然過了快兩個月,但還是來補一下筆記。去年被電得很慘,原本想說過一年了,今年應該會比較好吧,沒想到還是被電爛。

關鍵字:

  1. SSRF mongoDB via telnet protocol
  2. jetty cookie parser
  3. ASI (Automatic Semicolon Insertion)
  4. VM sandbox escape via Proxy
  5. process.binding
  6. 瀏覽器的 XSLT + XXE

開頭先貼一下官方的 repo,裡面有程式碼跟解答:https://github.com/dicegang/dicectf-2023-challenges

閱讀更多

最近有人在臉書前端交流社群發了一則貼文,內容是他看到了一個問題:請問登入api傳賬號、密碼json明碼會有問題嗎?,想知道大家對這個問題的看法。

而底下的回答大部份都是覺得「有用 HTTPS 就好了,沒必要額外再實作一層加密,沒有什麼太大的意義」

老實說我以前也是這樣認為的,而且過去在社群中就有出現過類似的討論。我那時候想說都已經有 HTTPS 了,而 HTTPS 本身的目的就是為了保障傳輸的安全,為什麼要自己再做加密?

但這一兩年接觸資安以後,我的想法有了改變,我認為前端在傳輸前把密碼加密,是有其意義的,而接下來我會詳細說明我的理由。

閱讀更多

今年認真跟著 Water Paddler 打了一整年的 CTF,看到有人整理出了一篇 CTF: Best Web Challenges 2022,發現裡面的題目大多數我都有打過,就想說那不如我來寫一篇整理吧,整理一下我自己打過覺得有學到新東西的題目。

因為個人興趣,所以會特別記下來的題目都跟前端與 JS 相關,像是其他有關於後端(PHP、Java 等等)的我就沒記了。

另外,這題有紀錄到的技巧或解法不代表第一次出現在 CTF 上,只是我第一次看到或是覺得值得紀錄,就會寫下來。

我把題目分成幾個類別:

  1. JS 相關知識
  2. Node.js 相關
  3. XSLeaks
  4. 前端 DOM/BOM 相關知識
  5. 瀏覽器內部運作相關

閱讀更多

簡單記一些自己有打的題目,沒有打的就不記了。

依照慣例先附上關鍵字:

  1. Python os.path.join 的利用
  2. YAML & JS polyglot
  3. strace & LD_PRELOAD

閱讀更多

前陣子有幾個 CTF 都很不錯,像是 SECCON 跟 HITCON,但可惜我前陣子剛好出國玩了,回來以後就懶得寫完整 writeup 了。原本其實連記下來都懶得記,可是一旦時間久了,要找相關的資料就會變得很難找,所以還是決定簡單記一下。

除此之外,順便記一下幾題我覺得以前應該要記下來,但不知道為什麼卻沒記下來的題目。

關鍵字:

  1. Node.js prototype pollution gadget to RCE (Balsn CTF 2022 - 2linenodejs)
  2. 取得 JS proxy 的原始值 (corCTF 2022 - sbxcalc)
  3. 瀏覽器 back 行為的 cache (SECCON CTF 2022 - spanote)
  4. 利用 svg 做出同步的 XSS (HITCON CTF 2022)
  5. 讀到 shadow DOM 的資料 (HITCON CTF 2022)

閱讀更多

被 web 題電得亂七八糟,基本上什麼都沒解出來。題目的品質都很不錯,學到很多新東西,值得記錄一下。

關鍵字:

  1. Electron relaunch to RCE
  2. 利用 Python decorator 執行程式碼
  3. 透過特殊檔名讓 Apache 不輸出 content type header
  4. GIF + JS polyglot
  5. 繞過 SQLite 不合法欄位名稱
  6. JS 註解 <!--
  7. superjson

閱讀更多

上個假日隨意地玩了一下 SekaiCTF 2022,不得不說視覺風格滿讚的,看得出來花了滿多心思在這個上面,很有遊戲的感覺。

這次我只玩了兩題 web,其中一題 xsleak 的 safelist 拿了 first blood,另外一題沒解開,說實在有點可惜(當 justCatTheFish 解開的時候我想說是誰這麼猛,賽後發現原來是 terjanq lol)

這篇寫一下 safelist 跟 Obligatory Calc 的解法,如果想看其他 web 題,可以看 lebr0nli 的 blog:SekaiCTF 2022 Writeups

關鍵字:

  1. xsleak
  2. lazy loading image
  3. 6 concurrent request limit
  4. socket pool
  5. null origin
  6. null e.source

閱讀更多

上集裡面,我們知道了基本的 CSS 偷資料原理,並且以 HackMD 作為實際案例示範,成功偷到了 CSRF token,而這篇則是要深入去看 CSS injection 的一些細節,解決以下問題:

  1. HackMD 因為可以即時同步內容,所以不需要重新整理就可以載入新的 style,那其他網站呢?該怎麼偷到第二個以後的字元?
  2. 一次只能偷一個字元的話,是不是要偷很久呢?這在實際上可行嗎?
  3. 有沒有辦法偷到屬性以外的東西?例如說頁面上的文字內容,或甚至是 JavaScript 的程式碼?
  4. 針對這個攻擊手法的防禦方式有哪些?

閱讀更多

在講到針對網頁前端的攻擊時,你我的心中浮現的八成會是 XSS,但如果你沒辦法在網頁上執行 JavaScript,有沒有其他的攻擊手法呢?例如說,假設可以插入 style 標籤,你能夠做些什麼?

在 2018 年的時候,我有寫過一篇 CSS keylogger:攻擊與防禦,那時剛好在 Hacker News 上面看到相關的討論,於是就花了點時間研究了一下。

而 4 年後的現在,我從資安的角度重新認識了這個攻擊手法,因此打算寫一兩篇文章來好好講解 CSS injection。

這篇的文章內容包含:

  1. 什麼是 CSS injection?
  2. CSS 偷資料的原理
  3. 如何偷 hidden input 的資料
  4. 如何偷 meta 的資料
  5. 承上,並以 HackMD 為例

閱讀更多

在我之前的文章:從 cdnjs 的漏洞來看前端的供應鏈攻擊與防禦裡面有提過可以藉由 cdnjs 來繞過 CSP,而有其中一種繞過手法必須搭配 prototype.js 才能成功。

在理解原理之後,我開始好奇在 cdnjs 上面是否還有其他 library 可以做到類似的事情,因此就開始著手研究。

這篇會從 cdnjs 的 CSP 繞過開始講,講到為什麼需要 prototype.js,接著再提到我怎麼從 cdnjs 上找到它的替代品。

閱讀更多