ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4팀_임예은 Write-Ups (Suninatas_28)
    2021/Write-Ups 2022. 1. 4. 22:27

    써니나타스 28번 문제를 풀어보았습니다.

    문제는 다음과 같고 down버튼을 누르면 So_Simple이라는 압축파일 하나가 다운받아집니다.

    그리고 압축을 풀려고 하면 다음과 같은 암호 설정 칸이 나타납니다.

    처음에는 brute-force가 필요없다는 말이 써있는 것을 힌트라고 보고 무작위로 여러번 입력해보았으나 비밀번호를 알아낼 수 없어 PEview로 zip파일을 열어 확인해보았습니다. 파일을 열면 다음과 같은 내용이 나오는데 Raw data와 value값만 확인해서는 암호를 알 수 없었습니다. 

    따라서 인터넷에서 raw data에 관한 내용을 찾다가 다음과 같은 내용을 발견했습니다. 0x6번째와 0x7번째가 플래그 값을 나타낸다는 내용이었습니다. 따라서 저는 암호화가 되어있지 않은 압축 파일을 찾아 열고 암호화가 걸려진 이 파일과 비교하였습니다. 

    다음은 암호가 걸려있지 않은 파일을 PEview로 열어서 확인한 내용의 일부입니다. 플래그 값이 담긴 부분만 보면 00 00으로 되어있는것을 확인할 수 있습니다. 그래서 저는 이 부분을 수정하기 위해 Hex editor를 다운받아 09 08로 되어있는 플래그 값을 00 00으로 바꿔주었습니다. 그러자 암호 확인 창이 뜨지 않고 zip파일 압축이 풀렸습니다.

    압축이 풀리면 다음과 같은 텍스트 파일이 들어있고, 안에는 다음 내용이 적혀있습니다.

    그대로 key값으로 집어넣었더니 되지 않아서 base64를 이용해 디코딩하여 나온 값을 넣었더니 암호가 풀렸습니다.

     

     

    +이렇게 풀긴 풀었으나 같이 들어있던 두 텍스트 파일은 확인할 수 없었으므로 그 방법을 찾기 위해 다시 검색을 하였는데, 플래그 값에 대한 다른 내용을 발견하였습니다. 16진수인 플래그 값을 2진수로 바꿔 표기하였을때 00번째 비트가 암호화를 의미한다는 것입니다. 개론에서 배운 리틀 엔디안 방식으로 플래그 값을 읽으면 08 09인데 프로그래머 계산기를 이용해 이진수로 표현해주면 다음과 같이 bit 00값이 1이 나옵니다. 이를 0으로 바꿔주기 위해 값을 08 08로 수정해주면 앞과 다른 방식으로 풀 수 있게 됩니다. 앞서 했던것 처럼 앞 줄의 하나만 수정해주는게 아니라 파일이 zip파일 하나, 텍스트 파일 2개 이므로 모든 파일의 Local File Header를 수정해주고 다시 압축을 풀어주면 메모장의 내용 또한 나오게됩니다.

    메모장 내용은 두 메모장 모두 같았고, 다음과 같습니다.