DongDD's IT

[2018 Angstrom CTF] Write-up(MISC,Crypto) 본문

CTF/Write-up

[2018 Angstrom CTF] Write-up(MISC,Crypto)

DongDD 2018. 3. 19. 16:23

[2018 Angstrom CTF] Write-up(MISC,Crpyto)



Waldo 1


Point : 10 point

Category : MISC


Problem

Waldo likes flags. (This is so meta.)


zip파일 하나가 주어져있었다.


주어진 zip 파일을 압축 해제하고 파일을 보면 5개의 png파일이 있었고 flag5.png에 글자가 써있는 것을 볼 수 있었고 이미지를 확인해보니 flag가 적혀있었다.


Answer & Flag


FLAG : actf{there_is_no_collusion_(between_temas)}




Waldo 2


Point : 30 point

Category : MISC


Problem : 

Now I have to find the Waldo among the Waldos! Man, if I looked at these 1 per 5 seconds, it would take me 42 minutes to find the odd man out. There must be a better way...


이번 문제도 zip파일 하나가 주어져있었다. 이번에는 zip을 풀어보니 500개의 jpg 파일이 있었다.



그 중에서 이미지가 보이지 않는 파일이 하나 있어서 hex editor를 통해 확인해보았다.

hex editor의 string 부분을 보니 flag가 적혀있었다.


Answer & Flag



FLAG : actf{r3d_4nd_wh1t3_str1p3s}




THAT'S NOT MY NAME...


Point : 40 point

Category : MISC


Problem : 

My friend sent me this copy of Lincoln's inspiring Gettysburg Address, but I can't seem to open it. Something about having the wrong name. Can you help me figure it out?


카피본을 받았는데 열 수 없다고 되어있었다. 잘못된 이름을 가진 것 처럼보인다고 써있었고 pdf파일이 하나 주어져있었다.

pdf 파일을 열어보니 오류로 인해 열 수 없다고 되어있었다. 그래서 이번에도 hex editor를 통해 확인해보았다.


확인해보니 file signature가 PK 이었다. PK의 file signature를 가진 파일은 찾아보니 ZIP, docx 파일의 종류가 있었고 파일 확장자를 docx로 바꿔 실행시켜보니 열리는 것을 볼 수 있었고 안에는 flag가 적혀있었다.



Answer & Flag



FLAG : actf{thanks_mr_lincoln_but_who_even_uses_word_anymore}




File Transfer


Point : 40 point

Category : MISC


Problem : 

We noticed someone trying to download a suspicious file on one of our networks. See if you can find out what they were getting from this network capture.


network를 통해 파일을 다운로드 받았고, capture된 패킷을 확인해 파일을 찾아보라고 되어있었다.

다운로드 받을 수 있는 pcap파일이 하나 주어져있고 확인해보았다.



WireShark를 통해 확인해보니 JPEG JFIF image라고 써있는 것을 볼 수 있었다. 암호화되지 않은 채로 전송되어있었다.



전송된 data영역을 복사해 hex editor로 jpg파일을 생성해 열어보니 flag가 적혀있었다.



Answer & Flag



FLAG : actf{0ver_th3_w1re}




GIF


Point : 50 point

Category : MISC


Problem : 

Making a gif is so hard.


gif파일로 되어있는 파일 하나를 받을 수 있게 되어있었다.



파일을 열어보니 gif처럼 움직임이 없었고 멈춘 화면의 이미지 파일 처럼 보였다. 

hex editor로 확인해보았다.


PNG의 file signature를 가진 것을 볼 수 있었다. converter를 이용해 png파일을 gif로 바꿔봤지만 역시 동작하지 않았다. hex값을 좀 더 찾아보다가 방법을 찾게 되었다.



PNG의 file signature를 가진 여러개의 PNG파일로 되어있는 것을 알 수 있었고 각 부분을 복사해 새로운 파일들을 생성하다보니 flag가 적힌 png파일 하나를 발견할 수 있었다.




Answer & Flag




FLAG : actf{thats_not_how_you_make_gifs}




Warm up


Point : 10 point

Category : Crypto


Problem : 

Just a quick warm-up cipher for everyone. Honestly, I think it's a fine cipher.


myjd{ij_fkwizq}


flag가 암호화된 것 처럼 보이는 문자열 하나가 주어져있었다.

a -> m, c -> y, t -> j, f -> d 인 것은 추측할 수 있었지만 나머지는 어려워보였다. fine cipher의 의미를 찾아보다가 (ax+b)%26으로 암호화하는 affine cipher라는 것을 알아내었고 자동으로 복호화해주는 사이트를 이용해 암호를 복호화해보았다.


Ref) affine cipher decoding : https://www.dcode.fr/affine-cipher



위 사이트의 기능을 이용해 복호화를 시도해보니 A가 19, B가 12일 때, ACTF로 보이는 문자열을 볼 수 있었고 이것을 소문자로 바꿔 특수문자는 그대로 둔채로 알파벳만 바꾸어 flag를 얻을 수 있었다.



Answer & Flag


FLAG : actf{it_begins}





BACK TO BASE-ICS


Point : 20 point

Category : Crypto


Problem : 

Here at angstromCTF, we know all the powers of two! Try and decode this.


Part 1: 011000010110001101110100011001100111101100110000011011100110010101011111011101000111011100110000010111110110011000110000

Part 2: 165 162 137 145 151 147 150 164 137 163 151 170 164 63 63 

Part 3: 6e5f7468317274797477305f733178

Part 4: dHlmMHVyX25vX20wcmV9


Flag is the concatenation of the four decoded parts.


4가지의 파트로 되어있는 암호문이 있었다.


먼저 Part 1의 이진수로 표현된 것 같은 값을 text로 바꾸어보니 "actf{0ne_tw0_f0"을 볼 수 있었다.

모든 Part를 해독하고 연결시키면 flag가 되는 것 같았다.

Part 1 : actf{0ne_tw0_f0


Part 2를 풀면서 가장 마지막에 해결했는데, 앞 flag를 보고 one->two->four이므로 165가 u, 162가 r이라는 것을 추측할 수 있었고 이것을 통해 8진수로 표현되어 있는 값인 것을 알 수 있었다.

165 -> 117('u'), 162 -> 114('r'), 137 -> 95('_'), 145 -> 101('e'), 151 -> 105('i'), 147 -> 103('g'), 150 -> 104('h'), 164 -> 116('t'), 137 -> 95('_'), 163 -> 115('s'), 151 -> 105('i'), 170 -> 120('x'), 164 -> 116('t'), 63 -> 51('3'), 63 -> 51('3')

Part 2 : ur_eight_sixt33


Part 3는 16진수로 되어있는 것을 알 수 있었고 바로 변환해보았다.

6e -> 'n', 5f -> '_', 74 -> 't', 68-> 'h', 31 -> '1', 72 -> 'r', 74 -> 't', 79 -> 'y', 74 -> 't', 77 -> 'w', 30 -> '0', 5f -> '_', 73 -> 's', 31 -> '1', 78 -> 'x'

Part 3 : n_th1rtytw0_s1x


Part 4는 base64로 암호화되어 있어 base64 복호화를 해보았다.

Part 4 : tyf0ur_no_m0re}




Answer & Flag


FLAG : actf{0ne_tw0_f0ur_eight_sixt33n_th1rtytw0_s1xtyf0ur_no_m0re}





XOR


Point : 40 point

Category : Crypto


Problem : 

We found these mysterious symbols hidden in ancient (1950s-era) ruins. We think a single byte may be key to unlocking the mystery. Can you help us figure out what they mean?


fbf9eefce1f2f5eaffc5e3f5efc5efe9fffec5fbc5e9f9e8f3eaeee7


위와 같은 암호화된 메시지가 주어져있었다. 문제가 XOR으로 되어있어 XOR로 해결할 수 있는 문제같았다.

여러 추측을 해보다가 해결할 수 있는 방법을 알아내었다.


먼저 2글자씩 끊어서 보면 된다는 것을 알게 되었고 "fb"를 16진수로 생각하고 첫번째 글자가 'a'라는 점을 가만해 두개를 xor해보니 154라는 값이 나왔고 이것을 다음 두 글자와 xor해보니 'c'라는 글자가 나오는 것으로 보아 xor값이 154라는 것으로 생각했고 이것을 이용해 프로그램을 작성해서 실행해보니 플래그를 얻을 수 있었다.


두 글자(16진수) -> 한 글자

XOR 값 : 154


1
2
3
4
5
6
7
8
9
10
11
12
import sys
 
= "fbf9eefce1f2f5eaffc5e3f5efc5efe9fffec5fbc5e9f9e8f3eaeee7"
=""
 
for i in range(len(s)):
    t += s[i]
    if(i%== 1):
        sys.stdout.write(chr(int(t,16)^154))
        t = ""
print
 
cs




Answer & Flag



FLAG : actf{hope_you_used_a_script}


Comments