這兩場比賽都有很多很有趣但也很難的題目,被電得很慘但也學到不少。

關鍵字列表:

  1. nim json, null byte
  2. nim request smuggling
  3. js-yaml
  4. web worker
  5. blob URL
  6. meta redirect
  7. file protocol & .localhost domain
  8. sxg: Signed Exchanges
  9. 431 CSP bypass
  10. DOM clobbering document.body
  11. ejs delimiter
  12. Node.js + Deno prototye pollution gadget
  13. XSleaks golang sort

閱讀更多

有些網站會用 GIF 來做一些圖檔,畢竟會動嘛,看起來就比一些靜態的圖片還要厲害,還要來得更吸引人。或其實不只是因為吸引人,而是有些需求本來就需要一個會動的圖,例如說貼圖,會動是很正常的。

但是 GIF 的缺點之一眾所皆知,就是檔案很大,真的很大。尤其是手機上因為解析度比較高,可能會需要用到三倍大小的圖片,就算只顯示 52 px,也要準備 156px 的圖檔,佔的空間就更多了。以網頁來說,當然是要載入的資源越少越好,越小也越好。

閱讀更多

這兩場都有稍微參加一下,但不是每一題都有看,這篇純粹做個筆記而已,稍微記一下解法,不會太詳細。

老樣子,筆記一下關鍵字:

  1. GraphQL batch query + alias
  2. Python os.path.join 絕對路徑
  3. Svg XSS, foreignObject
  4. WebRTC CSP bypass
  5. Status code xsleak
  6. DNS rebinding
  7. nmap command injection
  8. ruby rack 上傳檔案暫存
  9. buildConstraintViolationWithTemplate EL injection
  10. request smuggling
  11. document.baseURI
  12. 200/404 status code xsleak

閱讀更多

前陣子忙著旅遊,沒什麼時間在打 CTF,就算有打也有點懶得寫 writeup,導致上一篇 writeup 已經是 3 月份的時候了。覺得這樣斷掉其實有點可惜,就趕快再寫一篇補回來。

標題提到的這三個 CTF,我只有打 GoogleCTF 2023,其他兩場都只有稍微看一下題目而已,所以這篇也只是對題目以及解法做個筆記。

關鍵字列表:

  1. Flask 跟 PHP 解析 POST data 的順序不一致
  2. iframe csp 阻止部分 script 載入
  3. HEAD 繞 CSRF
  4. location.ancestorOrigins 拿 parent origin
  5. iframe 改 location 不會改到 src
  6. recaptcha URL 的 Angular CSP bypass gadget
  7. document.execCommand(‘undo’); 還原 input
  8. X-HTTP-Method-Override
  9. HTML 與 XHTML 的 parser 差異

閱讀更多

原本是想用開發者的角度寫一篇,但最近沒什麼時間,先寫一篇用 CTF 角度來記錄這個問題,以後有時間再補上用開發者角度寫的。

簡單來說,這篇講的是使用以下 pattern 會造成的問題:

const express = require('express')
const app = express()
const port = 3000

app.set('view engine', 'ejs');

app.get('/', (req,res) => {
    res.render('index', req.query);
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

閱讀更多

我的部落格架構其實很久沒有大幅改動過了,hexo 現在已經出到 v6,v7 正在 beta,而我的部落格還停留在 hexo3。

最近想說剛好比較有空,就趁機找時間翻新部落格,順便運用了 chatGPT 來當小助手。

這次做的改動有:

  1. Hexo 升級版本
  2. 修改 syntax highlight
  3. 深色模式
  4. 自動翻譯(重點)

閱讀更多

Regular expression,中文又翻作「正規表達式」或是「正規表示式」等等(以下簡稱 regexp),主要是用來做字串的配對,寫好一個模式之後,就可以拿來配對到符合規則的文字。

無論是電話號碼、Email 或是身分證字號等等,都可以運用 regexp 來完成初步的格式驗證,確保字串的格式與特定規則相符合。

Regexp 雖然方便,但沒寫好的話有可能導致一些輸入的驗證被繞過,演變成資安問題;而除了這個之外,還有另外一種也會造成問題,就是這篇要來講的 ReDoS,全名為:Regular expression Denial-of-Service,因為正規表達式所引起的阻斷服務攻擊。

閱讀更多

前面幾篇我們講的都是靜態分析的東西,也就是說我們並沒有把 app 跑起來,只是透過反編譯出來的程式碼研究 app 運作的邏輯,並且修改程式碼後重新打包執行。

而動態分析指的就是我們會把 app 跑起來,並透過一些方式讓我們可以 hook 各種方法,去監視某些 method 的輸入以及輸出,甚至是竄改。

這篇就讓我們來學習該怎麼樣使用 Frida 進行動態分析。

閱讀更多

我記得在我剛接觸 Android 沒多久的時候,要看 app 到底發了哪些 request 是很簡單的一件事情。只要在電腦上面裝個 Charles,接著設定手機上的 Wifi,讓它 proxy 到電腦上,然後輸入特定網址下載 Charles 提供的憑證,安裝完成以後就搞定了。

但前陣子用了一樣的流程,雖然有聽到一些封包,但從 app 出來的流量卻是空的,上網找了各式各樣的解法之後都行不通。

最後我才知道,原來是 Android 在 6.0 以上改變了安全性的設定,預設就不相信使用者自行安裝的憑證,所以才會攔截不到。有種做法是裝個 local VPN,這樣流量就會全部都過 proxy,但我試過以後發現還是有點麻煩。

在眾多方法之中,我試過最有用的方法,就是把 apk 拆開,改一些設定之後再裝回去,這篇就來記錄一下流程跟心得。

閱讀更多