[Dreamhack] Level2: web-deserialize-python
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/40 web-deserialize-pythonSession Login์ด ๊ตฌํ˜„๋œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Python(pickle)์˜ Deserialize ์ทจ์•ฝ์ ์„ ์ด์šฉํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์„ธ์š”. ํ”Œ๋ž˜๊ทธ๋Š” flag.txt ๋˜๋Š” FLAG ๋ณ€์ˆ˜์— ์žˆ์Šต๋‹ˆ๋‹ค.dreamhack.io ๋ฌธ์ œ์—์„œ Python(pickle)์˜ Deserialize ์ทจ์•ฝ์ ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€๋ผ๊ณ  ์ œ์‹œ๋˜์–ด์žˆ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ์— ๋Œ€ํ•ด์„œ๋Š” ์ฒ˜์Œ ๋“ค์–ด๋ด์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. โ–ผ๋”๋ณด๊ธฐhttps://mnzy.tistory.com/2012. ํ•ด๊ฒฐ ๊ณผ์ • (1) ๋ฌธ์ œ ํŽ˜์ด์ง€ ์ ‘์†  - create Session >  ์ •๋ณด ์ž…๋ ฅ > create - sessionID ๋ณต์‚ฌ ํ›„ check sessi..
[ํŒŒ์ด์ฌ] pickle module (Deserialize ์ทจ์•ฝ์ )
ยท
Study/WebHacking
1. Serialization & DeserializationํŒŒ์ด์ฌ์˜ pickle ๋ชจ๋“ˆ์€ ๊ฐ์ฒด ๊ตฌ์กฐ์˜ ์ง๋ ฌํ™”(serialization)์™€ ์—ญ์ง๋ ฌํ™”(deserialization)๋ฅผ ์œ„ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, pickle ๋ชจ๋“ˆ์€ ํŒŒ์ด์ฌ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€ํ™˜ํ•˜๊ณ , ๋‹ค์‹œ ๊ทธ ๊ฐ์ฒด๋กœ ๋ณต์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์ด๋‹ค.serialization : ํŒŒ์ด์ฌ ๊ฐ์ฒด ๊ณ„์ธต ๊ตฌ์กฐ -> ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ = picklingdeserialize : ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ -> ํŒŒ์ด์ฌ ๊ฐ์ฒด ๊ณ„์ธต ๊ตฌ์กฐ  = unpickling์ฆ‰, ์ง๋ ฌํ™”๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ/DB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ์„ธ์…˜์— ๊ฑธ์ณ ํ”„๋กœ๊ทธ๋žจ์„ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.  2. Pickle ..
[Dreamhack] Level 2: blind-command
ยท
CTF, War game
1. ๋ฌธ์ œhttps://dreamhack.io/wargame/challenges/73 blind-commandRead the flag file XD Reference Web Hackingdreamhack.ioflag file์„ ์ฝ์œผ๋ผ๊ณ  ๋˜์–ด์žˆ๋‹ค. 2. ํ•ด๊ฒฐ ๊ณผ์ •(1) ๋ฌธ์ œ ํŽ˜์ด์ง€ ํ™•์ธ?cmd=hi๋ฅผ ์ฃผ๋ฉด ํ™”๋ฉด์— ๊ทธ๋Œ€๋กœ ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋œ๋‹ค. (2) ์ฝ”๋“œ ํ™•์ธcmd์˜ ์ฟผ๋ฆฌ๊ฐ’์„ ๋ฐ›์•„ ์‹คํ–‰ํ•˜๋Š” ์ „ํ˜•์ ์ธ command injection ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GET ์œผ๋กœ ์š”์ฒญ์„ ๋ฐ›์•„์˜ฌ ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ cmd๊ฐ’์„ ์ค„ ๋•Œ๋งŒ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.#!/usr/bin/env python3from flask import Flask, requestimp..
[Dreamhack] Level 1: baby-union
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/984 baby-unionDescription ๋กœ๊ทธ์ธ ์‹œ ๊ณ„์ •์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. SQL INJECTION ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์„ธ์š”. ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ init.sql ํŒŒ์ผ์˜ ํ…Œ์ด๋ธ”๋ช…๊ณผ ์ปฌ๋Ÿผ๋ช…์€ ์‹ค์ œ ์ด๋ฆ„๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”Œ๋ž˜dreamhack.io 2. ํ•ด๊ฒฐ ๊ณผ์ •(1) ๋ฌธ์ œ ํŽ˜์ด์ง€ ํ™•์ธ  (2) ์ฝ”๋“œ ํ™•์ธ - app.py ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง์ด ์—†๋‹ค. import osfrom flask import Flask, request, render_templatefrom flask_mysqldb import MySQLapp = Flask(__name__)app.config['MYSQL_HOST'] = os.env..
[Dreamhack] Level 1: Easy Login
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/1213 easy-loginDescription ๊ด€๋ฆฌ์ž๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์„ธ์š”! ํ”Œ๋ž˜๊ทธ ํ˜•์‹์€ DH{...} ์ž…๋‹ˆ๋‹ค.dreamhack.io 2. ํ•ด๊ฒฐ ๊ณผ์ • (1) ๋ฌธ์ œ ํŽ˜์ด์ง€ ์ ‘์† - ์•„์ด๋”” / ํŒจ์Šค์›Œ๋“œ / OTP ์ž…๋ ฅ - admin์œผ๋กœ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ํŒจ์Šค์›Œ๋“œ์™€ OTP ๋ถ€๋ถ„์„ ์ฐพ๊ฑฐ๋‚˜ ์šฐํšŒํ•ด์„œ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•ด์•ผ ํ•œ๋‹ค.   (2) ์ฝ”๋“œ ๋ถ„์„- index.phpgeneratePassword ํ•จ์ˆ˜๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž(0-9, a-f)๋กœ ๊ตฌ์„ฑ๋œ ์ง€์ •๋œ ๊ธธ์ด์˜ ์ž„์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.generateOTP ํ•จ์ˆ˜๋Š” 'P'๋กœ ์‹œ์ž‘ํ•˜๋Š” 6์ž๋ฆฌ์˜ ์ˆซ์ž OTP๋ฅผ ์ƒ์„ฑํ•œ๋‹คadmin_pw์™€ otp๋Š” ๊ฐ๊ฐ 32์ž๋ฆฌ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ OTP๋ฅผ ์ €..
[PHP] strcmp ํ•จ์ˆ˜ ์ทจ์•ฝ์ 
ยท
Study/WebHacking
strcmp ํ•จ์ˆ˜ ์ž์ฒด๋Š” PHP์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.PHP์—์„œ strcmp ํ•จ์ˆ˜๋Š” ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด 0์„, ๋‹ค๋ฅด๋ฉด 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(strcmp($a, $b) ๋ฅผ ์‹คํ–‰ ํ•  ๋•Œ, $a๊ฐ€ ์ž‘์œผ๋ฉด ์Œ์ˆ˜, $b๊ฐ€ ์ž‘์œผ๋ฉด ์–‘์ˆ˜, ๊ทธ๋ฆฌ๊ณ  $a์™€ $b๊ฐ€ ๊ฐ™์œผ๋ฉด 0 ์ด ๋ฐ˜ํ™˜)์ด ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐ’๊ณผ ํƒ€์ž…์„ ์—„๊ฒฉํ•˜๊ฒŒ(strict) ๋น„๊ตํ•œ๋‹ค. ํ•˜์ง€๋งŒ strcmp๋Š” ์ธ์ž๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ค์ง€ ์•Š์„ ๊ฒฝ์šฐ(๋ฐฐ์—ด๋กœ ์ธ์ž๊ฐ’์„ ์ฃผ๊ฒŒ ๋  ๊ฒฝ์šฐ), NULL์„ ์ถœ๋ ฅํ•˜๋Š” ์ทจ์•ฝ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์˜ˆ์ œ GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ๋ฐ›์•„ admin์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•  ๋•Œ,test = 1์„ ์ฃผ๋ฉด no๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ  test=admin์„ ์ž…๋ ฅํ•˜๋ฉด yes๋ฅผ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹ค.  (php 7.1 ๋ฒ„์ „์—์„œ ํ…Œ..
[PHP] Type Juggling ์ทจ์•ฝ์ 
ยท
Study/WebHacking
PHP๋Š” ๋น„๊ต ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด == ์—ฐ์‚ฐ์ž์™€  === ์—ฐ์‚ฐ์ž๋ฅผ ์ง€์›ํ•œ๋‹ค.์ด๋•Œ, PHP๋Š” ๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์ „์— ํ•„์š”์— ๋”ฐ๋ผ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•œ๋‹ค.์ด๋Ÿฌํ•œ ๋ณ€ํ™˜์€ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. loose (๋А์Šจํ•œ) ๋น„๊ต ==     vs    strict (์—„๊ฒฉํ•œ) ๋น„๊ต === ==: ๋‘ ๊ฐ’์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฉด ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•œ ํ›„ ๋น„๊ต (์ฆ‰, ๊ฐ’๋งŒ ๋น„๊ต)===: ๋‘ ๊ฐ’์˜ ํƒ€์ž…๊ณผ ๊ฐ’ ๋ชจ๋‘ ๊ฐ™์•„์•ผ TRUE ๋ฆฌํ„ด ๊ธฐ๋ณธ ์˜ˆ์ œ var_dump(0 == '0'); // truevar_dump(0 == '0.0'); // truevar_dump(0 == ''); // truevar_dump(0 == null); // truevar_dump(0 == 'string'); // true (PHP..
[Dreamhack] Level 3: chocoshop
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/106 chocoshopDescription ๋“œ๋ฆผ์ด๋Š” ๋นผ๋นผ๋กœ๋ฐ์ด๋ฅผ ๋งž์•„ ํ‹ฐ์˜ค๋ฆฌ์ œ๊ณผ์—์„œ ๋นผ๋นผ๋กœ ๊ตฌ๋งค๋ฅผ ์œ„ํ•œ ์ฟ ํฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ FLAG! ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ, FLAG๋Š” ๋„ˆ๋ฌด ๋น„์‹ธ ์‚ด ์ˆ˜๊ฐ€ ์—†๋„ค์š”... ์ฟ ํฐ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ๊ธ‰dreamhack.io ๋“œ๋ฆผ์ด๋Š” ๋นผ๋นผ๋กœ๋ฐ์ด๋ฅผ ๋งž์•„ ํ‹ฐ์˜ค๋ฆฌ์ œ๊ณผ์—์„œ ๋นผ๋นผ๋กœ ๊ตฌ๋งค๋ฅผ ์œ„ํ•œ ์ฟ ํฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ FLAG! ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ, FLAG๋Š” ๋„ˆ๋ฌด ๋น„์‹ธ ์‚ด ์ˆ˜๊ฐ€ ์—†๋„ค์š”...์ฟ ํฐ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ๊ธ‰๋ฐ›๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ด๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ด์š”. ๋‚ด๋ถ€์ž ๋ง์— ์˜ํ•˜๋ฉด ์‚ฌ์šฉ๋œ ์ฟ ํฐ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋กœ์ง์ด ์ทจ์•ฝํ•˜๋‹ค๋Š”๋ฐ,๋“œ๋ฆผ์ด๋ฅผ ๋„์™€ FLAG๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š”!2. ํ•ด๊ฒฐ ๊ณผ์ •secret.pyfrom os impor..
[Dreamhack] Level 2: Dream Gallery
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/552 Dream Gallery๋“œ๋ฆผ์ด๋Š” ๊ฐค๋Ÿฌ๋ฆฌ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™ธ๋ถ€๋กœ ์š”์ฒญํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์•ˆ์ „ํ•œ ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ  ํ•˜๋„ค์š”... ๊ฐค๋Ÿฌ๋ฆฌ ์‚ฌ์ดํŠธ์—์„œ ์ทจ์•ฝ์ ์„ ์ฐพ๊ณ  flag๋ฅผ ํš๋“ํ•˜์„ธ์š”! flag๋Š” /flag.txt์— ์žˆ์Šต๋‹ˆ๋‹ค.dreamhack.io 2. ํ•ด๊ฒฐ ๊ณผ์ •/ -> /view๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋œ๋‹ค. /view์—์„œ๋Š” mini_database ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. @app.route('/')def index(): return redirect(url_for('view'))@app.route('/view')def view(): return render_template('view.html', ..
[Dreamhack] Level 2: Relative Path Overwrite Advanced
ยท
CTF, War game
1. ๋ฌธ์ œ https://dreamhack.io/wargame/challenges/440 Relative Path Overwrite AdvancedDescription Exercise: Relative Path Overwrite์˜ ํŒจ์น˜๋œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ˆ˜์ • ๋‚ด์—ญ 2023.08.10 bot.py ์ˆ˜์ •, Dockerfile ์ œ๊ณตdreamhack.io 2. ํ•ด๊ฒฐ ๊ณผ์ • ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๋Š” Relative Path Overwrite์™€ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค.  index.php์˜ ์ฝ”๋“œ์ด๋‹ค. GET๋ฐฉ์‹์œผ๋กœ page๋ฅผ ๋ฐ›๊ณ , ์ด page์— ..์ด๋‚˜ : ๋˜๋Š” / ์ด ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ include ํ•œ๋‹ค.  Relative-Path-O..
mnzy๐ŸŒฑ
mnzy๐ŸŒฑ
-->