Hacker's Playground Writeup (Samsung Security Tech Forum 2020)
Contents
URL: https://playground.sstf.site/
Samsung主催のCTFっぽいですね。
平日火曜日に6時間だけやっていて、たまたま年休を取っていたので参加できました。
275 points で、最終順位は 90位 でした。
といっても、最初の方のチャレンジにはTutorial(ほぼwriteup)が付いていて、その通りにやれば 275 points 取れます。
見たところ、43位〜114位はみんな 275 points でした。:)
以下、チャレンジです。
Tutorialが付いていたやつしか解いてないし、Tutorialががほぼwriteupなので、別途自分がwriteupを書くほどのことでもないんですが、Pwnのチャレンジだけ記録に残しておきます。
いちおう、これはTutorialを見ずに解きました。
[Pwn]: BOF 101 (50 points)
Challenge
You might have heard about BOF.
It’s the most common vulnerability in executable binaries.
The binary is running at:
nc bof101.sstf.site 1337.
Can you smash it?
Just execute printflag() function and get the flag!
Attachment:
-
bof101 (64bit ELF)
-
bof101.c
ソースの中身
|
|
Solution
とりあえず、2回アクセスしてみて2回とも同じアドレスが取れたので、スクリプトで読み取る処理はせず、スクリプトの中でそのままアドレスを書いてます。
$ nc bof101.sstf.site 1337 printflag()'s addr: 0x555555555229 What is your name? : aaa $ nc bof101.sstf.site 1337 printflag()'s addr: 0x555555555229 What is your name? : bbb
|
|
Flag: SCTF{n0w_U_R_B0F_3xpEr7}
おまけ1
まずは、Tutorialに書いてあった中から、勉強になったことをPickup。
GDBのオプションです。
|
|
使ったことのないオプションだったので、ググって以下の説明を見つけました。
https://stackoverflow.com/questions/233328/how-do-i-print-the-full-value-of-a-long-string-in-gdb
Set a limit on how many elements of an array GDB will print. If GDB is printing a large array, it stops printing after it has printed the number of elements set by the set print elements command. This limit also applies to the display of strings. When GDB starts, this limit is set to 200. Setting number-of-elements to zero means that the printing is unlimited.
へぇ〜。
.gdbinitに書いておけばいいのかな。
おまけ2
最近、Macbook Airを購入して、またMacをメインに使い出しました。
チャレンジのひとつの中に、base64 -i -d
というのが出てきて、base64 -d
がMacだとbase64 -D
になるのは知ってたんですが、-i
オプションもMacだと別の意味になるようです。
いちいちアタマを切り替えるのが面倒なので、Gnu版base64をMacで使えないか調べてみたら、gbase64
というのがすでにMacに入っていたことが判明。
aliasを設定しておきました。
alias base64='gbase64'
これで、ハッピー。
Author CaptureAmerica @ CTF フラxxグゲット
LastMod 2020-08-18