- N0PSctf 2024 Write-Up2024년 06월 03일 09시 17분 12초에 업로드 된 글입니다.작성자: Saen0zu
[ MISC ]
- Morse Me
challenge.txt에 쓰여져있는 모스부호를 모스부호 해석기를 사용해 해석해보면 다음과 같이 16진수로 이루어진 문자열로 추정되는 데이터가 나온다.
16진수의 문자열로 추정되는 데이터를 ASCII로 변환하면 Flag가 나온다.
[ REVERSING ]
- Just Read
주어진 파일을 기드라로 열어보면 다음과 같은 로직이 나온다.
주어진 문자들을 순서대로 조합하면 Flag가 나온다.
- Reverse Me
첨부된 이미지 파일을 열어보면 정상적인 사진 파일이 아닌 것임을 알 수 있다.
파일 구조를 파악하기 위해 HEX값을 확인해 보면 헤더만 JPG 파일의 헤더이고 문자열들이 뒤집혀 있는 것을 확인할 수 있다. 가장 밑의 바이트를 확인하면 ELF 파일의 헤더가 나온다.
파이썬으로 뒤집혀 있는 파일의 바이트를 되돌린다.
enc_data = b'' with open("./img.jpg","rb") as f: enc_data = f.read() enc_data = enc_data[::-1] with open("decrypt","wb") as f: f.write(enc_data)
바이트를 뒤집은 파일을 기드라로 열면 파일 실행시 4개의 인수가 필요하다는 것을 알 수 있다.
함수의 결과 값이 0이 아닐 경우 내부 로직이 실행되기 때문에 함수 안의 내용으로 입력값만 찾으면 Flag를 찾을 수 있다고 추측하여 입력값을 구하는 Z3 모듈을 사용해 구했다.
from z3 import * s = Solver() a = Int('a') b = Int('b') c = Int('c') d = Int('d') s.add(b*9 + a*(-8) + c*6 + d*(-2) == 0x48) s.add(b*(-3) + a*(-2) + c*(-8) + d == 0x1d) s.add(b*7 + a*5 + c + d*(-6) == 0x58) if s.check() == sat: m = s.model() print(m) === RESULT ============================================ [a = -3, b = 8, c = -7, d = -9]
결과값을 이용해 파일을 실행하면 Flag가 나온다.
[ WEB ]
- Web Cook
해당 페이지에 접속하면 어떤식으로 풀어야하는지 다 알려준다.
base64로 암호화 되어있는 쿠키값을 디코딩하면 JSON 데이터가 나오는데 isAdmin의 값을 1로 만들면 Flag를 주겠다는 내용이 쓰여져 있다.
username에는 아무 텍스트나 입력해서 submit한 후 EditThisCookie를 사용하면 쿠키값으로 %3D%3D(==)의 base64로 암호화 되어 있다는 것을 확인할 수 있어 복호화하면 JSON 데이터가 나온다.
Base64로 인코딩된 JSON 데이터를 확인하고 isAdmin의 값을 1로 바꾸어 인코딩한 값으로 쿠키값을 변경한다.
isAdmin의 값을 1로 한 데이터를 쿠키값으로 변경한 후 새로고침을 하면 Flag가 나온다.
'해킹 > CTF Write-Ups' 카테고리의 다른 글
HACKTHEON SEJONG 2025 Preliminaries Write-up (0) 2025.04.27 DEF CON CTF Qualifier 2025 Write-Up (0) 2025.04.14 R3CTF/YUANHENGCTF 2024 Write-Up (1) 2024.06.11 [WolvCTF Write-up] child-re (0) 2023.04.10 [vikeCTF Write-up]Floating Viking Head (1) 2023.04.10 다음글이 없습니다.이전글이 없습니다.댓글