自分の復習用に集めた情報をまとめておく。
gotm
- https://twitter.com/y0d3n/status/1507881366523813891
- https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/#gotm
SSTI可能。idに{{.}}
を与えてやるとJWTの秘密鍵が漏洩するので、それを使ってトークン改ざんしてflagを獲得する。
Memo Drive
- LINE CTF 2022のDiscordのwebチャネル
- https://blog.y011d4.com/20220327-line-ctf-writeup/#memo-drive
バリデーションをbypassしながらLFIして、./flag
を読む問題。
bb
- https://gist.github.com/mdsnins/da12a817fe18f3f3fb26663c4ceda0af
- https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/#bb
環境変数を使ってRCEする方法がこの世に存在するようだ。これを使う。
https://movaxbx.ru/2022/02/22/how-do-i-use-environment-variables-to-inject-and-execute-arbitrary-commands/
(ruドメインの締め出しか知らないが、アクセスできない。VirusTotalとかでIPアドレスを持ってきてhostsに追加する感じで手元で名前解決してやれば見れる。)
online library
- https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/#online-library
- LINE CTF 2022のDiscordのwebチャネル
app.get("/:t/:s/:e", (req: Express.Request, res: Express.Response): void => {
の部分で自由にLFIできるので、これと/proc/self/mem
を使ってメモリが見れる。
express-sessionではセッション情報がメモリに載るので、usernameにXSSコードを入れてsubmitするとメモリにXSSコードが載るので、それをLFIで取ってきて踏ませる。
すごい方法だけれど、わざわざusernameを報告前に送っているし、領域を指定して取得できる仕様もあるので想定解法なのかもしれない。
ログにpayload乗っけてLFIしてXSS発動と同じ雰囲気。
Discordのwebチャンネルではメモリ経由以外の解法もあると発言している人がいた。この人曰く、この解法ならxssの必要もないとのこと。
Haribote Secure Note
このセクション間違ってるかも。注意。
- https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/#haribote-secure-note
- https://gist.github.com/mdsnins/d8028c47212342ecadd9af5ec10f53f9
- ダブルエスケープ状態を使って、scriptの範囲を広げて発動させる
- https://twitter.com/ockeghem/status/1212746278263640067
- LINE CTF 2022のDiscordのwebチャネル
CSPをbypassして、XSSする問題。以上のように三者三葉。
title todo
- https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e
- https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/#title-todo
賢すぎるな。
画像アップロード機能があってキャッシュ機能もあるのだが、キャッシュヒットした場合は特殊なヘッダーが突くことを利用して、初回アクセスか2回目以降アクセスかが分かる。
これをオラクルとして機能させるために、scroll-to-textと画像のloading=lazyをうまく使う。
後はこのオラクルを使ってXSLeakする。
(そういえば去年もXSLeak問ありましたね)
me7-ball
理解できてない。
使ってるライブラリにsecret無しでデータを読みだす方法があって、それを利用すると解けるということだと思う。
多分。