GrabCON CTF 2021 Writeup
Contents
URL: https://ctf.thecybergrabs.org/
結構、Server Errorが出てましたね。。
750点を獲得し、174位でした。
チャレンジのリストです。
[Pwn]: Can you? (100 points)
Challenge
Can you?
nc 35.246.42.94 31337
Attachment:
- cancancan (ELF 32bit)
Solution
checksecを確認。
Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)
タイトルなどから、Canaryに関連したチャレンジなのがわかります。
Ghidraでコードを確認します。
|
|
Buffer Overflow と、Format String Bug (書式文字列攻撃) の両方の脆弱性がありますね。
"ctf 32bit canary fsb leak" でググったら、以下のWikiでほぼそのまんまの内容が見つかりました。
https://wiki.vaala.cloud/pwn/linux/mitigation/canary/#canary-leaks-canary
書いたコード(ほぼ流用)
|
|
Wikiではあんまり説明がなかったので補足すると、pwntoolsのsendlineは最後に改行 ("\n") が入るので101バイトが書き込まれ、("\n") で Canary の "\x00" 部分が上書きされます。
これによって、printfの結果がもともと"\x00"で止まるはずだったのが、Canaryを含めて出力されます。
("\n")は “\x0a” なので、-0xa をしています。0xFFFFFF00 でゼロクリアでも同じ結果になるはず。
Flag: GrabCON{Byp4ss_can4ry_1s_fun!}
[Web]: Basic Calc (150 points)
Challenge
Ever used calc based on php?
Link
Solution
ウェブサイトにアクセスすると、計算用のフォームと、PHPコードが表示されます。
PHPのコード部分は以下でした。
|
|
アルファベットを使わずにコマンドを入力しeval()に渡す、ということをしないといけません。
これも、ググって調べると、どうやら Root-Me の「PHP Eval」という問題と同じみたいです。
以下の Write Up を参考にさせていただきました。
https://joshuanatan.medium.com/root-me-web-server-php-eval-f77584cae128
コードは上記の Write Up をそのまま使ったので、ここには載せません。
system(“ls -al”)を実行したいとすると、
system = ('('^'[').('$'^']').('('^'[').(')'^']').('%'^'@').('-'^'@') ls -al / = (','^'@').('('^'[').('['^'{').'-'.('!'^'@').(','^'@').('['^'{').'/'
以下をPOSTすることになります。
(('('^'[').('$'^']').('('^'[').(')'^']').('%'^'@').('-'^'@'))((','^'@').('('^'[').('['^'{').'-'.('!'^'@').(','^'@').('['^'{').'/')
このようにカッコ(赤い部分)をつけないと、単純にechoでコマンド自体が表示されて、コマンドの結果が得られません。
ls -al /
を確認したら、/flagggg.txt があるのがわかります。
ここで、
cat /flagggg.txt
をやろうとすると、以下のようにエラーになってしまいました。
cat /*.txt
にて、フラグを得ることができました。
Flag: GrabCON{b4by_php_f0r_y0u}
Author CaptureAmerica @ CTF フラxxグゲット
LastMod 2021-09-05