-
picoCTF 2019 Forensic write up$ Capture The Flag $ 2019. 10. 15. 19:30
Glory of the Garden
문제를 HxD로 열어보면 아래와 같습니다.
Footer 시그니처 인 FF D9 뒤에 flag가 있습니다.
Flag : picoCTF{more_than_m33ts_the_3y35a97d3bB}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
unzip
압축 해제를 하면 Flag 를 볼수 있습니다.
Flag : picoCTF{unz1pp1ng_1s_3a5y}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
So Meta
문제 이름을 보고 메타 데이터에 은닉을 했다고 생각해서 HxD로 확인!
Flag : picoCTF{s0_m3ta_3d6ced35}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
What Lies Within
Steganography Online decoder를 이용해 보면 Flag 확인 가능!
주소 : https://stylesuxx.github.io/steganography/
Flag : picoCTF{h1d1ng_1n_th3_b1t5}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
extensions
txt 파일을 열어보면 아래와 같습니다.
png헤더 시그니처와 매우 비슷합니다.
.png 확장자로 바꿔서 확인해 보겠습니다.
Flag : picoCTF{now_you_know_about_extensions}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
shark on wire 1
패킷을 와이어샤크로 열어서 UDP Stream을 살펴 보면 udp.stream eq 6 에서 Flag를 찾을 수 있다.
Flag : picoCTF{StaT31355_636f6e6e}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
WhitePages
문제를 확인해 보면 흰 바탕의 txt 파일입니다.
2개의 크기가 다릅니다.
하나는 Tab, 다른 하나는 spacebar 로 판단이 되서 Tab은 0, Spacebar 는 1로 변환해서 Flag 를 구해보겠습니다.
변환을 하고 아래의 코드를 이용해서 Flag를 출력 해보겠습니다.
Flag : picoCTF{not_all_spaces_are_created_equal_3bf40b869ee984866e67f3057f006a92}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
c0rrupt
문제를 열어보면 PNG 파일의 헤더가 아예 망가져 있습니다.
헤더중에서도 마지막 헤더인 IDAT마저 깨져 있기 때문에 아래의 URL에서 공부 하면서 복구를 진행했습니다.
한글 PNG 파일 구조 : https://ryanking13.github.io/2018/03/24/png-structure.html
영문 PNG 파일 구조 : http://www.libpng.org/pub/png/book/chapter11.html#png.ch11.div.8 (더 정확하고 세밀함.)
복구를 하고 PNG 파일을 확인해 보겠습니다.
Flag : picoCTF{c0rrupt10n_1847995}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
like1000
문제를 보니.. 1000.tar 이라고 되어 있고 압축 파일 에는 999.tar 라고 되어있습니다.
1000번을 압축 하제 하면 답이 나올 것 같습니다.
아래와 같이 python 코드를 작성했습니다.
Flag : picoCTF{l0t5_0f_TAR5}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
m00nwalk
문제 wav 파일을 열어 보면 이상한 알수 없는 듣기 싫은 소리가 들립니다.
해당 문제를 모르겠어서 Hint를 확인해 보았습니다.
위 힌트를 보고 검색 하던중 RX-SSTV 라는 툴을 찾았습니다.
주소 : http://users.belgacom.net/hamradio/rxsstv.htm
해당 툴에 Receiving 부분을 클릭해서 Click으로 바꿔서 해당 음성 파일을 들려주면 아래와 같이 나옵니다.
뒷부분에 flag값이 있어서 뒷부분만 사진으로 변환 했습니다.
Flag : picoCTF{beep_boop_im_in_space}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Investigative Reversing 0
2개의 파일을 주는데 하나는 사진 파일이고 하나는 일반 바이너리 파일입니다.
사진파일의 footer 시그니처 뒤를 확인해 보면 다음과 같은 문자열이 있습니다.
picoCTK€k5zsid6q_e66efc1b} <- flag 같아 보이지만 뭔가 값이 변조된 느낌입니다.
picoCTK€k5zsid6q_5266a857}
다른 바이너리 파일은 ELF 파일이였습니다.
IDA로 디컴파일 된 코드를 해석해야 할 것 같습니다.
flag.txt 파일을 열고 mystery.png 뒤에 flag를 덧붙임.
그래서 아까 위의 문자열이 실행파일을 거쳐서 나온 flag라고 예측이 가능합니다.
로직은 이렇습니다.
0~5번 인덱스는 기존의 flag 그대로 출력.
6~14번 인덱스는 기존의 flag 아스키 코드값 + 5 한 결과를 출력
15번 인덱스는 기존의 flag 아스키 코드 값 - 3 한 결과를 출력
16~25번 인덱스는 기존의 flag 그대로 출력.
위의 로직에 따라서 python 코드를 작성해 보겠습니다.
Flag : picoCTF{f0und_1t_5266a857}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Investigative Reversing 1
문제의 파일을 살펴 보면 binary 파일은 ELF 파일로 실행 파일입니다.
image, image2, image3 은 footer 시그니처 뒤를 확인해 보면 flag 형식의 문자열이 보입니다.
image : CF{An1_b3ee41ac}
image2 : …s
image3 : icT0tha_
IDA로 열어보면 다음과 같습니다.
mystery.png -> v11
mystery2.png -> v12
mystery3.png -> v13
v15(1번인덱스) 값을 v13에 출력.
v3(0번인덱스) + 21 한값을 v12에 출력.
v16(2번인덱스) 값을 v13에 출력.
v17(3번인덱스) 값을 v6로 옮기기
v18(4번인덱스) 값을 v4로 옮기기
v19(5번인덱스) 값을 v13에 출력.
v4(4번인덱스) 값을 v11에 출력
v6(3번인덱스) 값을 +4 하고 6~9번 인덱스 까지 v11에 출력
v6(3번인덱스) 값을 v12에 출력
10~14번 인덱스 값을 v13에 출력
15~25번 인덱스 값을 v11에 출력
위의 로직의 순서대로 flag를 맞추는 python 코드를 작성해 보겠습니다.
Flag : picoCTF{An0tha_1_b3ee41ac}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Investigative Reversing 2
해당 바이너리를 분석해 보면 아래와 같은 디컴파일 된 소스코드를 확인 할 수 있습니다.
맨위 박스에서는 원본 사진의 바이트를 맨처음부터 2000바이트 까지 그대로 옮겨 적습니다.
그리고 중간에 flag는 50글자 라는 것 을 알려줍니다.
두번째 박스 에서는 총 50번의 j for문과 8번의 k for문을 확인 할 수 있고, codedChar 함수와 encoded.bmp에 입력이 되는 것을 확인 할 수 있습니다.
그렇기 때문에 flag와 관련된 문자열은 2000부터 2400 까지인 것 을 알 수 있습니다.
[2000 ~ 2400인 이유는 50*8번을 encoded.bmp로 입력하기 때문입니다.]
그리고 세번째 박스는 남은 모든 바이트를 모두 원본에서 그대로 가져옵니다.
codedChar함수를 한번 확인해 보겠습니다.
이러한 코드를 가지고 있습니다.
이데이터를 토대로 flag를 추출할 수 있는 코드를 작성해 보겠습니다.
Flag : picoCTF{n3xt_0n3000000000000000000000000036c2583d}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
pastaAAA
사진을 Stegsolve 툴을 이용해서 확인해 보면 아래와 같습니다.
Red plane 1에서 flag를 확인 할 수있는데 눈으로 식별이 완벽히 되지 않습니다.
Red plane 0 에서는 더 희미 하게 보입니다. 2개를 결합해서 Flag를 만들수 있을 것 같습니다.
Flag : picoCTF{pa$ta_1s_lyf3}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
제가 푼 문제들이 전부가 아닙니다.
제가 개인 공부를 해야해서 개인 사정으로 인해 풀다가 만것이기 때문에
직접 사이트에 들어가셔서 즐햌 하시길 바랍니다!!
'$ Capture The Flag $' 카테고리의 다른 글
Rooters CTF Forensic write up (0) 2019.10.18 LAYER7 CTF write up (0) 2019.10.17 picoCTF 2019 Only Binary Exploitation write up (0) 2019.10.15 picoCTF 2019 Only Reverse Engineering write up (0) 2019.10.15 picoCTF 2019 Web Exploitation write up (0) 2019.10.15