반응형
HackHiJack
HHJ
HackHiJack
전체 방문자
오늘
어제
  • 분류 전체보기 (99)
    • chatGPT (2)
    • pwn (2)
    • 워게임 (32)
    • Reversing (0)
    • Cryptography (12)
    • Web (6)
    • CTFs (16)
    • TryHackMe (6)
    • Go (5)
    • Forensics (18)

블로그 메뉴

  • 홈

공지사항

  • Welcome To HHJ's Blog

인기 글

태그

  • go
  • main.go
  • func
  • 해킹 #TryHackMe #WriteUp #ignite
  • webhacking.kr
  • 포렌식
  • startup
  • linkfile
  • forensic
  • package
  • analyis
  • hacking
  • 암호 #AES #드림핵
  • ㅣ
  • rootme
  • function
  • shellctf
  • Import
  • pwnable.kr
  • main

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HackHiJack

HHJ

UMDCTF(writeup) - HHJ
Forensics

UMDCTF(writeup) - HHJ

2022. 3. 7. 01:00
728x90
반응형

난 다음 4문제를 풀었다. -> Renzik's Case, Xorua, Magic Plagueis the Wise, jdata

(모두 포렌식 문제이다.)

 

Renzik's Case

 

winhex로 .img을 열었을 때, 다음과 같이 나왔다.

"중요한 문서" 라고 문제 설명에서 말하길래, 위에 personal_document에 뭔가 있음을 예상했다.

다음과 같이 폴더 안으로 들어가면 REALLY_personal_document가 있었다.

들어가면 다음과 같은 두 파일이 있었다.

두 파일 중 png파일이 다음과 같이 flag를 가지고 있었다.

flag : UMDCTF-{Sn00p1N9_L1K3_4_Sl317h!}

 

Xorua

이 문제는 before.png 와 after.png를 XOR한 후 PNG파일 부분만 보면 flag가 나왔다.

다음과 같은 python 코드를 이용해서 두 파일을 XOR하였다.

import sys

# Read two files as byte arrays
file1_b = bytearray(open(sys.argv[1], 'rb').read())
file2_b = bytearray(open(sys.argv[2], 'rb').read())

# Set the length to be the smaller one
size = len(file1_b) if len(file1_b) < len(file2_b) else len(file2_b)
xord_byte_array = bytearray(size)

# XOR between the files
for i in range(size):
	xord_byte_array[i] = file1_b[i] ^ file2_b[i]

# Write the XORd bytes to the output file	
open(sys.argv[3], 'wb').write(xord_byte_array)

print "[*] %s XOR %s\n[*] Saved to \033[1;33m%s\033[1;m."%(sys.argv[1], sys.argv[2], sys.argv[3])

그리고 나온 Raw data에서 PNG 부분만 따로 파일을 만들면 다음과 같이 flag 사진 파일이 나온다.

flag : UMDCTF{Sh4p3Sh1ft3R}

 

Magic Plagueis the Wise

 

이 문제는 다음과 같이 zip 파일에 매우 많은 raw 파일들이 있다.

총 이렇게 4464 개의 파일이 있었다.

 

안에 hexdump를 보면 다음과 같이 png파일같이 되어 맨 앞 byte부분만 다르다.

그래서 python으로 이 파일들을 순서대로 첫 바이트만 모아서 만든 문자열을 출력하는 코드를 만들었다.

flag = ""


for i in range(1,4464):
	with open(str(i),'r') as file: 
		raw = file.read(1)
	
	flag += raw

print flag

다음과 같이 실행했을 때 flag가 나오는 걸 확인할 수 있다.

flag : UMDCTF{d4r7h_pl46u315_w45_m461c}

 

jdata

마지막으로 jdata를 풀어보겠다.

 

아래와 같이 zip 파일을 준다.

그런데 hexdump를 확인하면 ELF 파일이다.

그래서 ida로 main부분을 봤는데 다음과 같이 이상한 문자열(?)을 출력하는 걸 확인할 수 있다.

사실, 이건 전혀 상관없고 hehe라는 함수에 flag가 시작된다.

거꾸로 이걸 받아 적으면 다음과 같은 문자열이 된다.(umdctf는 대문자로 바꾼다.)

UMDCTF{ghidraisforbinariesbroand

이제 나머지를 찾으면 되는데 hexdump 마지막 부분에 우연히 jdata.png라고 되어있는 걸 봤다.

그래서 foremost를 이용해서 다음과 같이 파일을 추출했다.

추출한 파일은 다음과 같이 나머지 flag를 주었다.

그래서 둘을 합치면 다음과 같이 flag가 완성된다.

flag : UMDCTF{ghidraisforbinariesbroandpubl1sh_s0m3_r3al_w0rk}

728x90
반응형

'Forensics' 카테고리의 다른 글

[대회 문제 풀이로 이해하는 디스크 포렌식 분석] - Mail Analysis _Recyle.Bin  (0) 2022.05.07
[대회 문제 풀이로 이해하는 디스크 포렌식 분석] - P2P + $Logfile  (0) 2022.03.27
[대회 문제 풀이로 이해하는 디스크 포렌식 분석 3,4강] - Web log  (0) 2022.03.04
[대회 문제 풀이로 이해하는 디스크 포렌식 분석 2강] - Linkfile analyis  (0) 2022.03.04
[대회 문제 풀이로 이해하는 디스크 포렌식 분석 1강] - ZipBomb 분석 문제유형  (0) 2022.03.04
    'Forensics' 카테고리의 다른 글
    • [대회 문제 풀이로 이해하는 디스크 포렌식 분석] - Mail Analysis _Recyle.Bin
    • [대회 문제 풀이로 이해하는 디스크 포렌식 분석] - P2P + $Logfile
    • [대회 문제 풀이로 이해하는 디스크 포렌식 분석 3,4강] - Web log
    • [대회 문제 풀이로 이해하는 디스크 포렌식 분석 2강] - Linkfile analyis
    HackHiJack
    HackHiJack
    $ whoami HHJ

    티스토리툴바