※ MIPSのシミュレータにread()でバッファが余計にクリアされてしまい
エラーが出る問題があったので,本番では無かった修正を入れています.
(サーバ攻略には影響しない問題&修正ですが,見栄えが悪いので修正しました)
あと,ベースとなったイメージからuser/rootのパスワードを変更していません.
CTF競技用の,脆弱性のあるプログラムが動作するVMイメージです.
取扱には十分に注意してください.インターネットに直接接続しているような状態で
うかつに立ち上げたりしないように注意!
パスワードを変更していないため,同じユーザIDでSSHでログインできます. (ログインはあくまで管理用で,攻略には不要です)
以下のようにポートフォワーディングしています.
10022ポートでSSHログイン可能です.(userのみSSHログイン可能)
ユーザIDとパスワードは以下.
まずはサーバのホームページに繋いで,説明を読んでください.
以下のポートで脆弱性のあるプログラムが動作しています.
telnet等で繋いでみてください.
必要な場合,SSHで接続して引き上げてください.
なので,Exploitしてsize.txtを小さめの値で上書きすることで, 他チームがExploitしにくくするように妨害することができます.
もちろん無闇に小さな値を書き込むと自分もExploitできなくなるので, 頑張って他チームよりも短いExploitコードを作成して, 自分はExploitできるが他人はできない,というサイズにする必要があります.
つまり競技者は,以下の3種類のExploitを行うことになります.
size.txtに書き込まれている値は定期的にインクリメントされます (サイズゼロが書き込まれても,しばらく待てばサイズは戻ります). またflag.txtには定期的にフラグワードを書き込む必要があります. このため,flag.txtとsize.txtへのExploitは1回だけではなく, 定期的に行う必要があります.
防御ポイントは,どれかひとつのアーキを攻略すれば得られます. (複数のアーキを攻略しても,そのぶん防御ポイントが得られるわけではありません)
あるチームがあるアーキを最小Exploitで攻略してsize.txtにそのサイズを 定期的に書き込んでいけば,そのアーキでの主導権を握ることができます. (そしてflag.txtを上書きすることで,防御ポイントが得られます)
この場合他チームはそれよりも短いExploitを書けば主導権を奪取できるため, 可能な限り短いExploitを書く,という競技になります. もしくは他チームは,別アーキを攻略してそちらで防御ポイントを稼ぐ, という方法もあります.なので様々なアーキのExploitを書く,という競技でも あります.
さらに,あるアーキを攻略したとしても,他チームが防御ポイントを得ることを妨害 するために,別アーキも攻略したほうがいい,ということでもあります. (あるアーキの主導権を得たとしても,別アーキを攻略するモチベーションが無くなる わけではない)
よって様々なアーキを転々として最小Exploitを作成する,という競技になります.
※ size.txtに不正な値(数値でない,とか)が書き込まれた場合には,自動的に 復旧されます.
※ stager防止のために標準入出力をclose()しています. このためword.txtの内容を直接得ることはできません. word.txtを読んだ後,size.txtに書き込むなどして間接的に内容を得る 必要があります.