ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4팀_임예은 Write-Ups(HackCTF 나는 해귀다)
    2021/Write-Ups 2022. 1. 11. 14:55

    HactCTF의 '나는 해귀다' 라는 문제를 풀어보았습니다.

    문제를 보면 zip 파일 하나가 보입니다.

    다운받아 압축을 풀면 다음과 같은 이미지 파일이 하나 나옵니다.

    이미지에 적힌 문구를 봐서는 hex값이 뒤집어져있다는 것 같습니다. 따라서 hex값을 확인하기 위해 hxd를 켜서 살펴보았습니다.

    hex값을 볼때 봐야하는 것은 png파일의 헤더 시그니쳐와 푸터 시그니쳐를 확인해야하는데, 헤더 시그니쳐는 알맞게 잘 되어있다. 그렇다면 푸터 시그니쳐에서 뭔가 문제가 있는 것인가? 하고 찾아보았더니 푸터 시그니쳐도 문제가 없었다. 따라서 이상한 점을 찾기 위해 hxd를 쭉 내려보았더니 이상한 부분을 찾았다.

    위 이미지는 hxd로 나온 텍스트의 제일 밑 부분을 캡쳐한 것인데 텍스트 부분을 보면 GNP로 PNG가 거꾸로 뒤집혀있는 것을 볼 수 있고 이것을 보면 헤더 시그니쳐가 뒤집혀있는 것을 볼 수 있다. 힌트로 준 이미지에서도 hex값이 뒤집혀있다고 했으니 이미지 하나의 hex값이 뒤집어져서 끝에 적혀있는 것 같았다. 어디까지 뒤집혀있는지 찾기 위해 위로 쭉 올려보았고, 끝을 의미하는 IEND가 뒤집혀있는 부분을 발견했다. 그 부분부터 끝까지 쭉 복사해주었다.

    이후 뒤집을 방법을 찾기 위해 텍스트를 뒤집어주는 사이트를 찾아 복사한 hex값을 뒤집고 나온 값을 다시 복사하여 hxd에 붙여넣었으나 이 방식으로는 헤더 시그니쳐 값이 변하고 수정한다해도 이미지가 깨져보이는 것을 확인하고 다른 방법을 찾아야겠다는 생각을 했다. 방법을 찾다가 파이썬을 이용해 뒤집을 수 있다는 것을 발견하고 코드를 사용하여 값을 뒤집고 생성된 png 파일을 열어보았더니 다음과 같은 이미지가 나왔습니다.

    사용한 파이썬 코드
    플래그 값이 거꾸로 뒤집혀져 있다.

    나온 플래그 값은 뒤집혀 있으므로, 반대로 적어주면 문제가 풀리게 됩니다.