CTF
-
[Study] LINE CTF 2022 Memo Drive WriteupCTF/LINE CTF 2022 2022. 3. 28. 07:47
주어진 페이지에 접근해보자. 아래와 같이 메모를 작성하고 읽을 수 있는 기능이 구현되어 있다. 주어진 소스코드를 분석해보자. 우선 Dockerfile에 플래그 위치가 나타나있다. ${MEMO}/memo/flag 를 읽어 플래그를 획득 할 수 있다는 점을 기억하자. FROM python:3.9.0 LABEL maintainer "t0rchwo0d_LINE" ENV SALT="ONLY_FOR_LOCAL_TEST" ENV MEMO /usr/local/opt/memo-drive RUN mkdir -p "${MEMO}" RUN apt-get -qq update && \ apt-get -qq -y upgrade && \ apt-get -qq -y install htop net-tools vim COPY ./memo..
-
[Clear] LINE CTF 2022 gotm WriteupCTF/LINE CTF 2022 2022. 3. 28. 06:56
주어진 URL에 접근해보면 당장에는 빈 페이지로 보이지만, 주어진 소스를 보면 go언어로 만들어져있는 사이트이며, 유효한 경로와 해당 기능이 어떤 핸들러에 매핑되어 동작하는지 확인 할 수 있다. // (3/3) of full source func main() { admin := Account{admin_id, admin_pw, true, secret_key} acc = append(acc, admin) http.HandleFunc("/", root_handler) http.HandleFunc("/auth", auth_handler) http.HandleFunc("/flag", flag_handler) http.HandleFunc("/regist", regist_handler) log.Fatal(http...
-
[Study] zer0pts CTF 2022 miniblog++ WriteupCTF/zer0pts CTF 2022 2022. 3. 21. 22:37
이 문제는 언인텐 풀이가 존재했다. 대회 기간에는 인텐풀이에 접근하지 못했다.. 하지만 언인텐 풀이는 똑같은 방식으로 시도했었는데 이상하게 대회 도중에 했을 때는 안됬었다.. (잘 기억나진 않지만 구문에 오타 등이 있어 제대로 되지 않았거나, 제대로 되었지만 내가 놓쳤을 수 있다.. ) 언인텐 풀이지만 점수를 못땄다는것이 아쉬워서 리뷰해본다. 주어진 페이지에 접근해보자. 아래와 같이 로그인을 하면 글을 작성하는데, 글의 내용으로 일정한 템플릿이 제공되는 서비스가 구현되어 있다. 또한, 작성한 글들을 backup하여 export 및 import를 할 수 있다. 주어진 소스코드를 분석해보자. @app.route('/', methods=['GET']) def index(): db = get_database()..
-
[Clear] zer0pts CTF 2022 GitFile Explorer WriteupCTF/zer0pts CTF 2022 2022. 3. 21. 21:58
주어진 페이지에 접근해보자. 아래와 같이 사용자 입력 값 기반으로하여 github 등을 통한 파일 다운로드 기능이 있는 페이지가 나타났다. http://gitfile.ctf.zer0pts.com:8001/?service=https%3A%2F%2Fraw.githubusercontent.com&owner=ptr-yudai&repo=ptrlib&branch=master&file=README.md 기능 실행 시 URL이 위와 같이 요청되므로, LFI를 의심하면서 주어진 소스코드를 분석해보자. (1)에서 요청 시 넘어가는 파라미터들 기준으로 파일을 호출하는데, 2와 같은 정규식 기반 조건식이 있다. 해당 정규식에는 취약점이 있는데 http뒤에 기타 구문을 삽입해도 정규식을 만족 할 수 있다. (http와 http..
-
[Clear] 1337UP LIVE CTF 2022 Traveler WriteupCTF/1337UP LIVE CTF 2022 2022. 3. 14. 06:59
별도의 소스코드는 주어지지 않는 블랙박스 문제였다. 주어진 페이지에 접근해보자. 페이지를 둘러보니 사실상 큰 기능이 없고, 유일한 공격포인트를 보이는 부분은 package를 확인하는 기능이었다. 해당 요청 시 전달되는 파라미터에 유효하지 않은 값을 입력하니, 에러메시지가 발생했는데 내용이 시스템 명령어의 에러메시지 같았다. command injection이라고 판단하고 ; | 등을 시도해보았지만 안됬다. 하지만 pack=aa&whoami 같은 방식으로 &(%26)를 활용하면 뒤에 입력한 명령어가 유효했다. https://github.com/payloadbox/command-injection-payload-list GitHub - payloadbox/command-injection-payload-list:..
-
[Clear]1337UP LIVE CTF Warmup Encoder WriteupCTF/1337UP LIVE CTF 2022 2022. 3. 14. 06:50
주어진 파일은 아래와 같다. # ENCRYPT.py from sympy import isprime, prime flag = '' def Ord(flag): x0r([ord(i) for i in flag]) def x0r(listt): ff = [] for i in listt: if isprime(i) == True: ff.append(prime(i) ^ 0x1337) else: ff.append(i ^ 0x1337) b1n(ff) def b1n(listt): ff = [] for i in listt: ff.append(int(bin(i)[2:])) print(ff) if __name__ == "__main__": Ord(flag) ''' OUTPUT : [1001100000110, 100110000010..
-
[Clear]1337UP LIVE CTF Mirage WriteupCTF/1337UP LIVE CTF 2022 2022. 3. 14. 06:40
주어진 페이지를 둘러봤으나 크게 성과가 없었고, 추가적인 정보획득을 위해 robots.txt에 접근하니 흥미로운 정보들이 있었다. 유효한 정보들은 아래와 같았다. 마지막 힌트에 Rotting이 도움이 될 것이라고 하여 cyberchef에서 rot13을 돌려보니 새로운 경로가 나타났다. 도출한 경로에 접근하면 또 하나의 정보가 나타나고, 다시 접근하면 플래그 파일을 다운로드 할 수 있었으나 암호가 걸려있었다. 기존에 확인했던 wordlists.txt 중 하나가 비밀번호일것이라고 생각해서 하나씩 대입해보는 자동화 코드를 짜서 압축을 해제하니 플래그를 획득 할 수 있었다. import os f = open('./wordlists.txt', 'r') wordlist = f.read() wordlists = wo..