これはなに?
会社の方に教えていただいて、面白そうだったのでイベントは終わってますが、挑戦してみようと思います
ローカル環境で実行
コードをDockerで実行します
以下のような画面が表示されました
何をするの?
docker-compose.yamlで渡されている環境変数のFLAG
の値を探す問題になります
コードを読んでみる
process.env.FLAG
が参照されている箇所は1箇所
main.ts:L21 にあります
const rank = getRank(score);
if (rank === 1) {
return {
rank,
message: process.env.FLAG || "fake{fake_flag}",
};
} else {
return {
rank,
message: `You got rank ${rank}!`,
};
}
どうやらrank
が1になればよさそう
解き方とか考え方
問題を作成された方が解説のほうがわかりやすいので、そちらを見たほうがいいです
説明を読んでわからなかった事
0X${"F".repeat(256)}
を入力するとなぜいいのか?
21024 - 1、またはおよそ 1.7976931348623157E+308 よりも大きな数値は Infinity
になります
Infinity って
グローバルプロパティ Infinity は無限大を表す数値です
POSITIVE_INFINITY を POSITIVE_INFINITY 以外の任意の正の値で割った商は POSITIVE_INFINITY になります。
console.log(Infinity / 10);
> Infinity
だから、ランキング1位になれるんだということがわかりました
最後に
問題を作られた方お疲れ様でした
parseInt(), Numberについて深く知ることができたのと、parseInt()の使い所、気をつける点がわかった気がしました