[BoB CTF] rev) 01_TEAtime
·
BoB/write-up
이번 대회에서 유일한 C++ 코드이다. 개인적으로 C++을 정말 좋아하지만, 바이너리를 디컴파일해서 나오는 모습은 정말 징그럽더라 flag.txt, flag.txt.enc 두 개의 fd를 생성하고 TEA 알고리즘을 이용해 FLAG를 암호화한 내용을 ~.enc 파일에 작성해 저장한다. 그렇다면 우리는 위의 코드를 그대로 역연산해서 복호화하면 끝난다. 사실 이런 간단한 단순 연산 작업은 GPT한테 맡겨도 잘 나오지만... 디컴파일한 main 함수를 조금 더 자세히 살펴보면, FLAG 문자열을 8바이트씩 끊어 하나의 블록으로 처리하고 있다. 각 블록은 sub_2778 함수로 넘겨 암호화 작업을 수행한다. 또한 암호화 과정에 사용되는 키 역시 main 함수에서 정의하고 있는데 자세한 키 값을 아래와 같다. v9..
[BoB CTF] web) 02_old_python_interpreter
·
BoB/write-up
이 문제를 처음 접했을 당시에는 문제 이름을 보고서 특정 파이썬 버전에서만 발견되는 취약점을 찾아 이를 활용해야하는 문제로 이해했다. 파이썬 3.4.7 버전에서는 'local_file://' 스키마를 통해 file에 접근할 수 있는 취약점이 존재한다. ( [CVE-2019-9948] ) https://bugs.python.org/issue35907 Issue 35907: [security][CVE-2019-9948] Unnecessary URL scheme exists to allow local_file:// reading file in urllib - Python tra The Unnecessary scheme exists in urlopen() urllib when people would protec..
[BoB CTF] web) 01_flying_chicken
·
BoB/write-up
문제 사이트가 닫혀버려서 캡처 이미지를 넣을 수 없는 관계로 줄글로만 작성한다. https://ellisonleao.github.io/clumsy-bird/ Clumsy Bird - A Flappy Bird clone using MelonJS ellisonleao.github.io 위의 사이트와 동일한 오픈소스 기반의 Flappy Bird를 플레이해서 200점을 넘기면 플래그가 출력된다. https://dreamhack.io/wargame/challenges/96 Carve Party Description 할로윈 파티를 기념하기 위해 호박을 준비했습니다! 호박을 10000번 클릭하고 플래그를 획득하세요! dreamhack.io 드림핵에서도 이와 유사하게 호박을 10000번 클릭하면 플래그가 출력되는 문제..
[BoB CTF] misc) 03_I'm_Happy
·
BoB/write-up
(대회 기간 내에 풀지는 못했지만, 늦게나마 풀어서 롸업을 작성해본다.) Audio 기반의 스테가노그래피 문제이다. 보통 이런 경우에는 정형화된 유형이 몇 가지 있는데 크게 세 가지 케이스를 들 수 있다. 1. 오디오 스펙트럼을 시각화하면 플래그가 보이거나 (가청 주파수 대역 안에서 플래그를 그렸다면 음원 만으로도 티가 나지만, 아무래도 20000Hz를 넘긴다면 강아지가 아닌 이상 음원만 듣고서는 바로 알아채기 어렵다. ) 2. LSB에 바이너리를 숨겨두거나 3. 음원 자체가 모스부호 (...)나 SSTV 방식의 음원인 경우 (이 경우에도 다른 음원을 섞을 경우 노이즈를 제거하고 원본 파일을 성공적으로 복원하기 어려워지기 때문에 원본을 숨기지 않고 그대로 출제하는 경우가 많아 티가 많이 난다.) 그렇다면..
[BoB CTF] misc) 02_bob_secret_note
·
BoB/write-up
AES 128bit를 EBC, CBC 두 개의 운영모드를 사용해서 암호화하고 Base64로 인코딩한 값 (토큰)을 바탕으로 admin에 해당하는 토큰값을 추정하여 로그인해야하는 문제이다. 처음 서버에 접근할 때에는 PoW 챌린지가 주어지는데, 아래와 같이 코드를 작성해서 해결해주면 된다. import json from base64 import b64encode def encode_to_base64(data): # Convert the json data to string json_str = json.dumps(data) # Encode the string to bytes json_bytes = json_str.encode() # Convert bytes to base64 encoded string base..
[BoB CTF] misc) 01_find me if you can
·
BoB/write-up
사진 하나를 열어보자마자 매크로 프로그램을 짤 때 Captcha 문자를 입력하기 위해 OCR을 사용해서 코드를 작성해본 경험이 떠올랐다. 이 문제의 경우에도 OCR을 이용하는 것 이외에는 별 다른 풀이가 없어 보이므로 빠르게 코드를 작성해보도록 하자. 이전에 개인적으로 작성했던 매크로 파일을 오랜만에 열어봤더니 당시에는 CUDA기반으로 GPU를 사용해 빠르게 동작할 수 있는 easyocr 이라는 파이썬 모듈을 사용했지만..... 어째선지 잘 작동하지 않아서 최종적으로는 PyTesseract를 사용했다. 코드를 작성할 때에는 사진 속 이미지의 대/소문자 형식과 플래그의 포맷을 참고해서 ' BOB{ '가 존재하는 이미지를 찾으면 되겠다. from PIL import Image import pytesserac..