Dreamhack - Curling
·
CTF
1. 소스코드from flask import Flask, request # Flask 웹 프레임워크와 요청 처리를 위한 모듈from os import urandom # 안전한 랜덤 바이트 생성을 위한 모듈from subprocess import run, TimeoutExpired # 외부 명령어 실행 및 타임아웃 처리를 위한 모듈# Flask 애플리케이션 객체 생성app = Flask(__name__)# 세션 및 CSRF 보호를 위한 비밀 키 생성 (32바이트 랜덤 값)app.secret_key = urandom(32)# 플래그 값 로드 시도: 서버 환경에서 "/flag" 파일 읽기try: FLAG = open("/flag", "r").read().strip() # 파일에서 플래그를 읽어 공..
Secure Secret
·
CTF
#!/usr/bin/env python3import osimport stringfrom flask import Flask, request, abort, render_template, session# 비밀 파일을 저장할 경로와 허용할 문자 집합을 정의합니다.SECRETS_PATH = 'secrets/'ALLOWED_CHARACTERS = string.ascii_letters + string.digits + '/'#알파벳 대문자 소문자 숫자 슬래시만 허용 된다.# Flask 애플리케이션을 초기화합니다.app = Flask(__name__)# 세션 암호화에 사용할 비밀 키를 무작위로 생성합니다.app.secret_key = os.urandom(32)# 샘플 파일을 생성하여 기본 메시지를 씁니다.with ope..
(CTF 출제) simple-web-request
·
CTF
문제화면이다. STEP 1을 들어가 보자.             문제코드도 한번 보자.       #!/usr/bin/python3import osfrom flask import Flask, request, render_template, redirect, url_forimport sysapp = Flask(__name__)try: # flag is here! FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]"@app.route("/")def index(): return render_template("index.html")@app.route("/step1", methods=["GET", "POST"])def ..
(CTF출제) Type c-j
·
CTF
문제화면이다.               flag.php, check.php, index.php 3개의 파일이 존재한다. 문제를 풀기위해서는 check.php 만 보면 될 거 같다. 다음은 check.php 에 중요한 부분을 발췌한것이다.  ID pass.'; if((int)$input_pw == $pw && strlen($input_pw) === 8){ echo "FLAG\n"; echo $flag; echo ""; } } else{ echo 'Try again.'; } }else { echo 'Fail...'; } ?>  id는 랜덤 출력하는 ..
(CTF출제) baby-union
·
CTF
import osfrom flask import Flask, request, render_templatefrom flask_mysqldb import MySQLapp = Flask(__name__)app.config['MYSQL_HOST'] = os.environ.get('MYSQL_HOST', 'localhost')app.config['MYSQL_USER'] = os.environ.get('MYSQL_USER', 'user')app.config['MYSQL_PASSWORD'] = os.environ.get('MYSQL_PASSWORD', 'pass')app.config['MYSQL_DB'] = os.environ.get('MYSQL_DB', 'secret_db')mysql = MySQL(app)@app..
(CTF 출제)DreamHack - Carve Party (수정)
·
CTF
호박을 클릭하면 숫자가 줄어든다. 9999번 클릭하면 되는 게임인 거 같다. 는 무슨 코드를 봐보자.          'pumpkin' 의 배열선언 124,112,59 ~ 'counter'이 변수는 몇 번 클릭했는지를 나타내는 거 같다. 함수 make 에서는 클릭 횟수에 따라 투명도를 조절하는 코드인 거 같다. if(10000 클릭횟수가 10000보다 클 경우에 글자 애니메이션이 나온다고 한다. 그다음은 'function()'인데 이 부분이 중요한 거 같다.$('#jack-target'). click( ~  호박을 클릭하면 counter 가 1씩 증가한다,          여기서 "counter" 를 조작해 버리면   이상한 문자열이 나온다. 아마 실제 클릭 횟수를 따지기 때문에 그런 거 같다. 그러면 ..