CTF
-
[Clear] b01ler CTF 2023 fishy-motd writeupCTF/b01lers CTF 2023 2023. 3. 20. 23:31
주어진 URL에 접속해보면 메시지를 입력하여 MOTD(Message of the Day 인듯 하다) 를 생성 할 수 있는 입력창이 나타난다. Create를 하면 Preview와 Deploy가 있는데, Deploy를 하면 봇이 MOTD가 포함된 로그인 페이지에서 자동으로 로그인을 수행하도록 구성되어있다. Preview같은 경우 봇이 자동 로그인을 할 때 사용하는 페이지를 보여주는 듯 하다. 또한, 문제의 최종 목적은 로그인을 하여 플래그를 획득 하는 것이다. server.post('/login', (req, res) => { const username = req.body.username; const password = req.body.password; if (username === user && passw..
-
[Clear] b01lers CTF 2023 warmup writeupCTF/b01lers CTF 2023 2023. 3. 20. 16:52
웹 카테고리의 warmup 문제이다. 주어진 URL로 접근하면 base64인코딩 된 값으로 추정되는 경로값이 있고, 소스코드에 debug.html 이 언급되어있다. debug.html을 base64 인코딩 처리하여 접근해보았다. app.py를 통해 rendering 테스팅을 한다고 하여 app.py 도 base64처리하여 접근해보았다. 서버의 소스코드가 노출되었다. from base64 import b64decode import flask app = flask.Flask(__name__) @app.route('/') def index2(name): name = b64decode(name) if (validate(name)): return "This file is blocked!" try: file = o..
-
[Study] Google CTF 2022 LOG4J WriteupCTF/Google CTF 2022 2022. 7. 15. 19:42
이번 구글 CTF는 참가하지 못했다. 대회 종료 후 리뷰해보았다. 제공되는 URL(https://log4j-web.2022.ctfcompetition.com/) 에 접근해보면 아래와 같은 페이지가 나타난다. 주어진 파일을 분석해보자. 우선 pom.xml 파일에서 사용중인 log4j의 버전을 확인 할 수 있다. 2.17.2 버전을 사용하는 것으로 보아 얼마전에 떠들썩했던 JNDI 등을 활용한 log4jshell 이라고도 불렸던 취약점을 이용 하는 것은 아닌듯 하다. 프론트엔드 소스코드를 분석해보자. import os import subprocess from flask import Flask, render_template, request app = Flask(__name__) @app.route("/", m..
-
[Study] WACon CTF 2022 Kuncɛlan WriteupCTF/WACon CTF 2022 2022. 6. 27. 22:13
대회 기간에는 해결하지 못했던 문제였다. 우리 팀은 인원수 제한으로 ST4RT, 3ND 두 팀으로 나누어 출전했는데(본인은 ST4RT 로 출전) 3ND팀에서는 해당 문제를 해결했다. 대회 종료 후 서버 오픈 시간이 길지 않았기 때문에 팀원인 nicknamemohaji 님의 롸업을 기반으로 리뷰해보았다. 해당 문제는 블랙박스 기반 문제로, 별도의 소스코드가 주어지지 않았다. 주어진 페이지에 접근해보자. guest / guest 로 로그인하면 curl 기능을 사용 할 수 있는 듯 한 페이지로 안내된다. 하지만 관리자 권한이 없어서 해당 기능을 테스트 할 수 없다. 우선 gobuster를 통해 별도로 접근 가능한 디렉토리나 파일이 있는지 확인해보았다.(OSCP의 습관..) load.phtml 이 존재하는데, ..
-
[Clear] WACon CTF 2022 interspace WriteupCTF/WACon CTF 2022 2022. 6. 27. 21:49
주어진 소스파일을 분석해보자. #!/usr/bin/env python3 import difflib import itertools import random import os import re import signal import string import time def bye(*args): print("Bye!") exit(1) signal.signal(signal.SIGALRM, bye) signal.alarm(5) STEPS = 10 FLAG = os.environ.get("FLAG", "WACon{fake-flag}") print("Flag distance calculator:") for i in range(STEPS): candidate = input("> ").strip() if candidate..
-
-
[Clear] DEF CON CTF Qualifier 2022 same old WriteupCTF/DEF CON CTF Qualifier 2022 2022. 6. 1. 22:55
CRC32 충돌 관련 문제였다. HACK ____ Planet 의 문자열인 "the"에 CRC32연산의 결과값과 팀명(ST4RT)에 임의의 문자열을 붙힌 값에 CRC32연산 값이 같은 문자열을 구해야 한다. ex. CRC32('the') == CRC32('ST4RTasdasd') 유사한 문제의 레퍼런스를 참고하여 문제를 해결했다. https://blog.matta.kr/133?category=739966 Flag collision Description Category: Misc/Coding Source: ASIS CTF 2019 Quals Points: 67 Description: Warm-up your fingers to capture next flags! nc 37.139.9.232 19199 ## ..
-
[Clear] DEF CON CTF Qualifier 2022 mic check 1 WriteupCTF/DEF CON CTF Qualifier 2022 2022. 6. 1. 22:49
check 문제로 간단한 pwntools 활용 문제가 나왔다. nc로 서버에 접속하면, 나름 복잡한 수식이 주어지는데, 시간 제한이 짧아서 실제 계산해서 답을 제출하기는 불가능에 가깝다. 따라서, pwntools를 활용하여 데이터를 파싱하고, 연산을 수행하여 제출하는 코드를 작성하면 플래그를 반환해준다. from pwn import * import base64 import binascii import sys def int_or_float(x) : if "." in x : return float(x) else : return int(x) def calc(x,y,z) : x = int(x) z = int(z) if y == b'+' : return x+z elif y == b'-' : return x-y e..