공공부분으로 진출하였긴 하지만 첫 본선 진출했던 cce. 짧은 후기와 예선과 본선에서 본인이 풀었던 웹 문제 2개를 정리해 보려 한다. 티오리 한번 잡아보자며 호기롭게 지었던 팀이름이였지만 부족한 실력만 깨닫게 되는 시간이였다. 물론 아무도 티오리를 이길수 있을거란 생각을 하진 않았지만, 팀원 모두 첫 본선 진출이니 만큼 많은 기대와 꼴등은 피하자는 생각으로 대회에 임했던것 같다. 공공부분 예선20위, 본선 14위로 아쉬운 성적표였지만, 너무 좋은경험이였고 앞으로 있을 CTF나 대회에서 본선진출만큼은 꼭 계속해내고 싶다는 간절한 생각이 들게 된 좋은 자극제였다. 본인은 예선에서 웹 1문제, 본선에서 웹 1문제를 풀었는데, 다행이도 제일 쉬운 문제가 웹문제로 나와서 한문제라도 풀고 집에갈 수 있게 되어 얼..
Made Sense - misc 소스코드import os from pathlib import Path import re import subprocess import tempfile from flask import Flask, request, send_file app = Flask(__name__) flag = open('flag.txt').read() def write_flag(path): with open(path / 'flag.txt', 'w') as f: f.write(flag) def generate_makefile(name, content, path): with open(path / 'Makefile', 'w') as f: f.write(f""" SHELL := /bin/bash .PHONY: ..
문제는 어렵지 않으나 각종 우회 기법 관련해 정리할만 하다고 생각하여 작성한다. 싱글쿼터로 internal server error를 확인하였으므로, SQL injection을 진행해본다. ' or 1=1;# '||1=1;# '||1=1 -- a 등등 시도해 봤지만, 기본적으로 필터링 되어있는것을 확인할 수 있었고, '||1;# 로 로그인에 성공할 수 있었다. 명령어를 입력하여 flag가 들어있는 파일을 읽어오는 문제임을 확인 할 수 있었다. 그러나, 기본적으로 공백, flag, cat, slash 등등 많은 필터링이 존재했으므로 이것을 필터링 하는것이 관건이다. 이때, 각각 공백은 { , } 로 우회할 수 있었고 {ls,..} slash는 ${HOME:0:1}로 cat 명령어는 tail로, flag.tx..