Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

15
Plaid CTF 2017 Write-Up - zipper (MISC 50pts) - by Alchemic (KoreaTech 이세한)
  • date post

    17-Mar-2018
  • Category

    Engineering

  • view

    558
  • download

    0

Transcript of Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

Page 1: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

Plaid CTF 2017 Write-Up- zipper (MISC 50pts) -

by Alchemic(KoreaTech 이세한)

Page 2: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

2

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

이 문제는 MISC 문제로 출제되었지만, Forensic 문제로 생각해도 무방한 문제입니다.

문제에서는 zip 형태의 압축 파일이 하나 주어지고, 이 파일을 고치고flag를 얻어낼 수 있는지 물어봅니다.

Page 3: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

3

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

파일을 다운로드 받으면 [zipper.zip] 이라는 파일이 받아집니다.

먼저 압축을 해제하려고 하면 위 그림과 같이 파일이름이 너무 길다는에러 메시지가 출력됩니다.

Page 4: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

4

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

[zipdetails]를 이용하여 파일을 살펴보면...

[Filename Length]가 ‘2329’로 너무 크게 설정되어 있는 것을 확인할 수 있습니다.

Page 5: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

5

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

위 그림은 Zip 파일 형식에 대해 설명한 그림입니다.

참고 : https://github.com/corkami/pics/blob/master/binary/zip101/zip101.pdf

Page 6: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

6

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

앞의 [zipdetails]로 살펴보았듯이 HexEditor로 살펴보면[Filename Length]는 ‘001A’와 ‘00A4’에 존재하는 것을 확인할 수 있으며,각각 [Local Header] 영역과 [Central Header] 영역인 것을 알 수 있다.

Page 7: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

7

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

[Filename Length]를 크기가 작은 임의의 값인 ‘0008’로 수정합니다.

Page 8: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

8

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

현재 보여지는 그림은 [Local Header] 영역의 정보들입니다.

[Filename Length]를 수정하고 다시 [zipdetails]를 이용하여 살펴보면,수정된 것이 확인이 되며, 수정된 크기에 맞춰서 [Filename]이 나타난 것을 확인할 수있습니다. (현재는 Null 값으로 입력이 되어 있습니다.)

Page 9: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

9

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

위 그림은 [Central Header] 영역의 정보들을 표시한 것입니다.앞의 [Local Header] 영역과 같이 [Filename Length]와 [Filename] 정보가 보이는 것을확인할 수 있습니다.

Page 10: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

10

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

[Filename]을 수정하기 위해 HexEditor를 이용하여 zip 파일을 엽니다.

위 그림에서 빨간색 상자로 표시한 부분이 바로 [Filename] 정보가 표시되었던부분입니다.

Page 11: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

11

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

현재 앞의 작업에서 [Filename Length]의 크기를 ‘0008’로 수정하였기 때문에[Filename]의 크기 또한 8byte로 되어야 합니다.

따라서 8글자의 문자로 수정하면 됩니다. (예를 들어, ‘PlaidCTF’ 혹은 ‘AAAABBBB’)

Page 12: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

12

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

압축 파일이 제대로 수정되었는지 확인해보기 위해 [zipinfo]를 이용합니다.

# zipinfo zipper.zip

압축 파일 내의 파일이름이 출력되고, 압축률이 71.5% 라는 것을 확인할 수있습니다.

이제 압축을 해제할 수 있습니다!

Page 13: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

13

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

압축을 해제하고 파일의 내용을 확인하면 플래그(flag)를 획득할 수 있습니다!

Page 14: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

14

The Flag is

PCTF{f0rens1cs_yay}

Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

Page 15: Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]

Thank You.