CTF/X-MAS CTF 2020
-
[Clear] X-MAS CTF 2020 Comfort Bot WriteupCTF/X-MAS CTF 2020 2020. 12. 23. 08:07
Web 카테고리 4번째 문제였다. 디스코드 채널의 bot과의 대화를 통해서 플래그를 획득하는 문제였다. 블랙박스가 아님에 감사하며 제공되는 파일을 분석해보았다. bot.py , engine.py 등등 여러 파일들의 코드를 읽으며 내가 작성한 메시지가 어떻게 처리되는지를 분석하였고 처리되는 과정에서 취약한 부분을 발견하였다. async def getCleverResponse (authorID, txt): global driver try: driver.execute_script("window.open('http://localhost/','_blank');") windows[authorID] = driver.window_handles[-1] switchToAuthorWindow(authorID) script ..
-
[Clear] X-MAS CTF 2020 flag_checker WriteupCTF/X-MAS CTF 2020 2020. 12. 22. 00:11
Web 카테고리의 세 번째 문제이다. 문제 내용은 아래와 같다. Target 페이지에 접근해보면 php소스가 주어진다. 코드를 간단히 해석해보자. get방식으로 flag라는 파라미터에 사용자 입력값을 받아서 checkFlag 함수로 검증을 한다. 검증 과정은 플래그값(문제에서는 예시로 example_flag 가 주어졌다) 에 대해 대문자가 있다면 소문자로 치환을 하고 사용자 입력값을 한글자씩 플래그 값에 포함되어있는지 검사를 한다. 하지만 몇번째 인덱스이고, 반복 여부 등등을 검증하지는 않기때문에 이를 통해서 플래그를 유추할수는 없고, 사용가능한 문자들이 어떤것인지만 파악 할 수 있다. import requests c= '' arr = [] for i in range(32,126) : c = chr(i)..
-
[Clear] X-MAS CTF 2020 Santa's consolation WriteupCTF/X-MAS CTF 2020 2020. 12. 21. 08:25
두 번째 Web문제였다. 특이한 점은 출제자측에서 곧 런칭할 버그바운티 사이트 안에 문제를 구축해놓았다. 홍보 겸 좋은 방법이라고 생각한다. (나도 이 문제를 계기로 구독하였다 ㅋㅋ) Target에 접속해보면 아래와 같은 사이트가 뜨고, LET's HACK 버튼을 클릭하면 콘솔창에 문제가 로딩된다. 문제를 분석하기 위해 challenge.js 코드를 정리하면 아래와 같다. console.log("%c██████╗░██╗░░░░░██╗░░░██╗██╗░░░██╗██╗░░██╗\n\██╔══██╗██║░░░░░██║░░░██║██║░░░██║██║░██╔╝\n██████╦╝██║░░░░░██║░░░██║██║░░░██║█████═╝░\n██╔══██╗██║░░░░░██║░░░██║██║░░░██║██╔═██..
-
[Clear] X-MAS CTF 2020 PHP Master WriteupCTF/X-MAS CTF 2020 2020. 12. 21. 00:17
Web 카테고리 첫 번째 문제였다. 주어진 사이트에 접속해보면 php 코드가 주어진다. if(strpos($p1, 'e') === false && strpos($p2, 'e') === false && strlen($p1) === strlen($p2) && $p1 !== $p2 && $p1[0] != '0' && $p1 == $p2) { die($flag); } 핵심 코드를 분석해보자. flag를 획득하기 위해서는 아래 조건을 동시에 만족하는 값을 입력해야 한다. 1. param1에는 e가 포함되면 안된다. 2. param2에는 e가 포함되면 안된다. 3. param1과 param2의 길이는 같아야 한다. 4. param1과 param2는 데이터 타입이 다르거나 값이 달라야 한다. (!==) 5. para..
-
[Clear] X-MAS CTF 2020 FORMULA TRANSLATION NOVICE WriteupCTF/X-MAS CTF 2020 2020. 12. 20. 22:41
이번 대회에서 그나마 밥값(?)을 한 문제였을까.. 이 문제의 분류는 리버스 엔지니어링이었다. 문제 내용은, 주어진 문제 파일을 열어보면 아래와 같다. REAL FUNCTION ANALYZER(M, I, B) INTEGER M(*), I INTEGER B, OP OP = I DO 10 I = 1, B B = B + 1 10 CONTINUE I = OP OP = XOR(B, 35) IF (OP .EQ. M(I)) THEN ANALYZER = 1.0 ELSE ANALYZER = 0.0 ENDIF RETURN END SUBROUTINE COMPUTE(A, I, B) INTEGER A, I, B INTEGER OPTIMIZE COMMON /PRAGMA/ OPTIMIZE DO 50 I = 0, B -1 B = B..
-
[Clear] X-MAS CTF 2020 Scrambled Carol WriteupCTF/X-MAS CTF 2020 2020. 12. 20. 17:30
이 문제는 Cryptography 문제였으며, 상세 내용은 아래와 같다. 분류는 암호학으로 되어있었지만 문제 안에 reverse engineering 이란 단어를 보고 도전한 문제.. 주어진 script.py 파일을 보자. import os import random def get_seed(size): return int(os.urandom(size).hex(), 16) input_data = None output_data = "" seed = get_seed(4) random.seed(seed) old_sigma = "0123456789abcdef" ###### new_sigma = list(old_sigma) ###### 비트, 문자 또는 블록을 문자 집합 내부에서 random.shuffle(new_s..