๋ฌธ์ ์ค๋ช
you have a pawn, just promote it
=๋๋ ํฐ์ ๊ฐ์ง๊ณ ์๋ค. ํฐ์ ์น์ง์์ผ๋ผ.
๋ฌธ์ ๋ถ์
ํฐ์ ์์ง์ฌ ๋ฐ๋ํธ ๋์ ๋๋ฌํ๋ฉด ํธ์ผ๋ก ์น์ง๋๋ค. ๊ทธ ์ธ์๋ ๋ฑํ ๊ตฌํ๋ ๊ธฐ๋ฅ์ด ๋ณด์ด์ง ์๋๋ค.
์ฝ๋๋ฅผ ํ๋ฒ ์ดํด๋ณด์
EXPECTED_SEQUENCE = ['f1', 'a1', 'g1']
@app.route('/')
def chess_board():
return render_template('chess_board.html')
@app.route('/check_moves', methods=['POST'])
def check_moves():
move_sequence = request.json.get('moves', []) #์ฌ์ฉ์๋ก๋ถํฐ move_sequnce๋ฅผ ๋ฐ์์จ๋ค
if move_sequence[-3:] == EXPECTED_SEQUENCE: #๋ง์ฝ move_sequence ๋ฆฌ์คํธ์ ๋ค์์ 3๊ฐ์ ์์๊ฐ EXPECTED_SEQUENCE์ ๊ฐ๋ค๋ฉด
flag_path = os.path.join(app.root_path, 'flag.txt') #์ด์์ฒด์ ์ ๋ง๊ฒ ํด๋ ๊ตฌ๋ถ์๋ฅผ ๋ค๋ค์ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ค๋ค
try:
with open(flag_path, 'r') as file:
flag_content = file.read().strip()
return jsonify({"flag": flag_content})
except FileNotFoundError:
return jsonify({"error": "Flag file not found"}), 404
else:
return jsonify({"message": "Incorrect move sequence"}), 400
์ฝ๋๋ฅผ ์ดํด๋ณด๋ f1, a1, g1์ ๊ธฐ๋ฌผ์ ์์น์ํค๋ฉด if move_sequence[-3:] == EXPECTED_SEQUENCE: ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ์ผ flag๊ฐ ๋ฐํ๋๋ ๊ฒ๊ฐ๋ค.
๋ฌธ์ ํ์ด
ํฐ์ ํธ์ผ๋ก ์น์ง์ํค๊ธฐ ์ ์๋ ์์ d์ด์ ๋ฒ์ด๋์ง ๋ชปํ๋ฏ๋ก, ํธ์ผ๋ก ๋จผ์ ์น์ง์ํจ๋ค. ์ดํ f1, a1, g1์ ํธ์ ์์๋๋ก ์์น์ํค๋ฉด flag๊ฐ ์ถ๋ ฅ๋๋ค(๊ฐ์ฅ ์ต๊ทผ์ ์์นํ ๊ณณ์ ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ค์ pushํ๊ธฐ ๋๋ฌธ์).
DH{Welcome_KUCIS:lzdq7ZKzHZ+3EESwM1CNgA==}
'๐ฆ Private > CTF Wriet-Up' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
RivestโShamirโAdleman-Germain[crypto] (0) | 2024.12.01 |
---|---|
Fuzzybytes[Web] (0) | 2024.12.01 |