ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - BMP Recovery
    wargame/Dreamhack 2024. 5. 1. 23:45

    [LEVEL 2 - BMP Recovery - misc, forensics]

     

     

     

    문제 설명에 BMP 파일의 중요한 값들을 지워버려서 flag.bmp를 올바르게 복구해야 한다고 되어있다.

    문제 파일을 다운로드 받으면 chal.py 파일과 flag.bmp.broken 파일이 들어있다.

     

     

     

    일단 flag.bmp.broken 복제본을 생성해놓고 복제본으로 문제를 풀었다. 위 캡처 사진은 문제파일에 있던 chal.py 파일이다.

     

     

     

     

     

    커서가 하나 전으로 되어있어서 파일의 맨 끝 오프셋은 DA58F6이다.

     

     

     

     

     

    초기 파일의 모습이다. 18 00 부분 오프셋 빼고 나머지는 다 날아간듯하다.

    이 부분에서 알 수 있는 건 1픽셀당 24비트(3바이트)로 표현된다는 것이다.

     

     

     

     

     

    bmp 파일의 헤더 시그니처(BM)인 42 4D로 먼저 변경 후, 나머지 오프셋도 하나씩 원래의 값에 맞게 변경했다.

    앞서 확인한 전체 파일 바이트 값을 16진수로 변환한 DA58F6을 리틀엔디안으로 다음 4바이트에 입력한다.

    그다음 전체 헤더 바이트값인 54는 0x36이니까 해당 오프셋 자리에 입력한다.

    info 헤더 바이트값은 40이므로 0x28을 해당 자리에 넣고, bitplane값은 보통 1이라 0x01로 한다.

    마지막으로 이미지 데이터 바이트값은 (전체 파일 바이트값) - (헤더 바이트값)을 16진수로 변환한 값인 DA58C0을 리틀엔디안으로 4바이트에 맞게 입력한다.

    width와 height 부분은 일단 가능한 조합이 많으므로 비워두고 이 상태로 저장한다.

     

     

     

     

     

    위와 같이 코드를 짜서 width와 height의 가능한 조합을 전부 찾아서 .bmp 파일로 저장한다.

    양이 많아져도 사진보면서 플래그값 나와있는 이미지 찾는 게 훨씬 편하니까 이렇게 했다(주석에 target은 total_pixels를 의미하고, 처음에 출력하려다가 파일 저장하는 걸로 바꿈).

    실행하면 가능한 조합의 다양한 bmp파일이 저장되고 그중에서 플래그를 찾을 수 있다.

     

     

     

     

     

     

     

     

    플래그를 획득했다!

     

    'wargame > Dreamhack' 카테고리의 다른 글

    Dreamhack - Enc-JPG  (0) 2024.05.08
    Dreamhack - video_in_video  (0) 2024.05.07
    Dreamhack - sleepingshark  (0) 2024.05.01
    Dreamhack - web-ssrf  (2) 2024.03.26
    Dreamhack - file-download-1  (1) 2024.03.25
Designed by Tistory.