[LEVEL 1] session-basic
**์๋์ฐOS - ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ธฐ์ค
[Description] | ์ฟ ํค์ ์ธ์
์ผ๋ก ์ธ์ฆ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋จํ ๋ก๊ทธ์ธ ์๋น์ค์
๋๋ค. admin ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ํ๋๊ทธ๋ฅผ ํ๋ํ ์ ์์ต๋๋ค. ํ๋๊ทธ ํ์์ DH{…} ์ ๋๋ค. |
[1] ๋ฌธ์ ํ์ผ ๋ค์ด๋ก๋
[2] app.py ํ์ผ์ ์ด์ด๋ณธ๋ค.
[2-1] ์ฝ๋๋ฅผ ๋ณด๋ฉด, ๋ก๊ทธ์ธ ํ ์ ์๋ ์์ด๋์ ํจ์ค์๋๊ฐ ์ฃผ์ด์ ธ ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
users = {
'guest': 'guest',
'user': 'user1234',
'admin': FLAG
}
- ์์ด๋ : guest / ํจ์ค์๋ : guest๋ก ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ฌ ์ฟ ํค๋ฅผ ๋จ๊ธด๋ค.
[2-2] ์ฝ๋๋ฅผ ๋ณด๋ฉด, ์ฃผ์ด์ง URL ๋์ /admin ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํด ์ ์ํ์๋, ์ ์ฅ๋ ์ธ์ ์ ๋ณด๋ฅผ ํ๋ ํ ์ ์์์ ํ์ธ ํ ์ ์๋ค.
@app.route('/admin')
def admin():
# developer's note: review below commented code and uncomment it (TODO)
#session_id = request.cookies.get('sessionid', None)
#username = session_storage[session_id]
#if username != 'admin':
# return render_template('index.html')
return session_storage
- ์ค์ ๋ก ์ ์ ํด ๋ณด๋ฉด ์๋ ํ์์ผ๋ก ๋์ค๋๋ฐ, admin์ sessionid์ value๊ฐ์ ๋ฉ๋ชจ์ฅ์ด๋ ๊ธฐํ ์๋ฌด๊ณณ์ ๊ธฐ๋กํด ๋๋ค.
์? ํด๋น value๊ฐ์ ์ด์ฉํ์ฌ admin๊ณ์ ์ผ๋ก ์ ์ํ์ฌ FLAG๋ฅผ ํ๋ํ ๊ฒ์ด๋ฏ๋ก!
{"sessionid์ value๊ฐ":"guest","sessionid์ value๊ฐ":"admin"}
[3] F12๋ฅผ ๋๋ฌ ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ๋ฅผ ์ด๊ณ , Application -> Cookies ํญ๋ชฉ์ ์กฐ์ํ๋ค.
- Value์ ์ฐํด๋ฆญ -> Edit "Value" -> ๊ธฐ๋กํด๋ admin์ sessionid์ value๊ฐ์ ๋ถ์ฌ๋ฃ๊ณ ์ํฐ
[4] ์ฒ์ ์ ์ํ ๋ ๋ด๋ Welcome ! ํ์ด์ง๋ก ๊ฐ๋ณด๋ฉด FLAG ํ๋
[LEVEL 1] cookie
**์๋์ฐOS - ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ธฐ์ค
[Description] | ์ฟ ํค๋ก ์ธ์ฆ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋จํ ๋ก๊ทธ์ธ ์๋น์ค์
๋๋ค. admin ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ํ๋๊ทธ๋ฅผ ํ๋ํ ์ ์์ต๋๋ค. ํ๋๊ทธ ํ์์ DH{…} ์ ๋๋ค. |
[1] ๋ฌธ์ ํ์ผ ๋ค์ด๋ก๋
[2] app.py ํ์ผ์ ์ด์ด๋ณธ๋ค.
[2-1] ์ฝ๋๋ฅผ ๋ณด๋ฉด, ๋ก๊ทธ์ธ ํ ์ ์๋ ์์ด๋์ ํจ์ค์๋๊ฐ ์ฃผ์ด์ ธ ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
users = {
'guest': 'guest',
'admin': FLAG
}
[3] F12๋ฅผ ๋๋ฌ ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ๋ฅผ ์ด๊ณ ์งํ ํด ๋ณธ๋ค.
- Application -> Cookies ํญ๋ชฉ์ ์ด์ด๋๋ค.
- ์์ด๋ : guest / ํจ์ค์๋ : guest๋ก ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด Name : username / Value : guest๋ก ์ฟ ํค๊ฐ ๋จ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
[4] app.py์ ์ฝ๋๋ฅผ ๋ณด๋ฉด, ์ฟ ํค๊ฐ์ ์กฐ์ํ์ฌ username๋ง 'admin'๋ก ๋ฐ๊พธ์ด์ฃผ๋ฉด FLAG ๊ฐ์ ๊ตฌํ ์ ์์์ ํ์ธ ํ ์ ์๋ค.
@app.route('/')
def index():
username = request.cookies.get('username', None)
if username:
return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}')
return render_template('index.html')
[5] Value์ guest ํญ๋ชฉ์ ์ฐํด๋ฆญ -> Edit "Value" -> admin์ผ๋ก ์ ๋ ฅ ํ ์ํฐ -> ์๋ก๊ณ ์นจ
[6] FLAG ํ๋
P.S ์ธ์ ํ์ด์ฌํน(session hijacking : ํ ์ด์ฉ์์ ์ฟ ํค๋ฅผ ํ์ณ ์ธ์ฆ ์ ๋ณด๋ฅผ ํ๋ํ๋ ๊ณต๊ฒฉ) ์ ์ฌ๋ฐ๊ฒ ์ดํดํ ์ ์์ด์ ์ข์๋ค.