前陣子忙著旅遊,沒什麼時間在打 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 拆開,改一些設定之後再裝回去,這篇就來記錄一下流程跟心得。

閱讀更多

在第一篇當中我們學到了基礎中的基礎,靠著 Apktool 把 apk 拆開,修改資源以後組裝回去,並且把對齊且簽署過的 apk 裝回手機上面。

而接下來的這一篇,我們要來看看如何修改程式碼。

我們的目的是在一台有 root 的手機上繞過檢查,讓 app 顯示沒有 root。如果你是用沒有 root 的手機來測試的話,你可以反過來,將 app 改成會偵測出你有 root。

閱讀更多

五年前我有寫過一篇:[Android] 人人都會的 apk 反編譯,那時我還是個寫 Android 的工程師,因為工作上的需求跟同事一起研究了基本的 Android 逆向工程,想達成的目標是全自動的流程,上傳一個 apk 以後自動把 apk 拆開來,塞一些奇怪的東西再裝回去。

而現在同樣是因為工作上的需求,再次回憶並補強了一下對於 apk 反編譯以及修改等等的相關知識,寫成這一系列的文章跟大家分享。

先說在前面,這一系列都只是「入門」而已,利用各種工具把 apk 拆開來再裝回去,對於沒有加殼的 app 應該夠用了,但如果有加殼過的話,需要再更深一點的 binary 相關知識才能夠解開,那又是另一個世界了。

總之呢,這個系列適合沒有接觸過 Android App 逆向,想要玩玩看的人,也適合 Android 工程師,可以把自己寫的 app 拆開來,看看是什麼樣子,我覺得也滿有用的。

閱讀更多

近期我以零日文基礎的身份開始唸書並通過了日本的基本情報技術者以及情報セキュリティマネジメント試験,這篇會分享我是怎麼準備的,又運用了哪些考試技巧。

文章大綱如下:

  1. 為什麼要考這兩個考試?
  2. 日本 IPA 相關證照簡介
  3. 情報セキュリティマネジメント試験在考什麼?
  4. 基本情報技術者試験在考什麼?
  5. 我是怎麼準備考試的?策略是什麼?
  6. 考試如何進行?
  7. 考試的心得以及分數

閱讀更多

今年 Water Paddler 拿了第二名,總共 9 題 web 解掉了 8 題(我貢獻了 2 題),整體 web 的難度我覺得去年似乎比較難,今年比的人似乎也比較少一點。

話說最近我發現自己的 writeup 筆記沒有以前這麼多了,其中一個原因是最近比較忙,另一個原因是最近有興趣的題目(client side)沒這麼多,或我也有在想搞不好是隊友越變越強,還沒開題就被隊友解掉,我也懶得再去看題目,於是就懶得寫筆記了XD

這次只記幾題有參與或有興趣的,其他就先省略了。

閱讀更多