ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - rev-basic-6
    wargame/Dreamhack 2024. 7. 23. 20:19

    [LEVEL 1 - rev-basic-6 - reversing]

     

     

    이 문제도 마찬가지로 입력값이 맞으면 Correct, 틀리면 Wrong을 출력하는 프로그램이 주어진다.

     

    메인함수를 ida로 디컴파일한 모습이다.

     

     

     

     

    이 함수를 참고해서 역으로 입력값이 무엇이 되어야 하는지 계산해야 한다.

    조건문 안에 있는 문장을 해석해 보면, 결국 아래를 만족하는 a1을 찾아야 한다.

    byte_140003020[a1] == byte_140003000[i]

     

     

     

     

    먼저 byte_140003000을 들어가면 위와 같은 데이터를 볼 수 있다.

     

     

     

     

    다음으로, byte_140003020을 들어가면 위와 같은 데이터를 볼 수 있다.

     

     

     

     

    ida의 Hex View 탭에서 그대로 복사할 수 있다.

     

     

     

     

    vs code에 붙여넣은 다음, 열 편집(Ctrl + Shift + Alt + 마우스 드래그) 기능을 이용해 "0x"랑 ","를 추가한다.

    아까 byte_140003020[a1] == byte_140003000[i] 이 문장을 만족하는 a1의 값(인덱스값)들을 구해야 한다고 했는데, 이를 파이썬 코드로 작성하면 위와 같다.

    여기서 아스키코드는 128을 넘어갈 수 없으므로 byte_array2에는 128개만 붙여넣었다.

     

     

     

     

    코드를 실행시키면 위와 같은 문자열이 나온다.

     

     

     

     

    문제에서 주어진 chall6.exe에 해당 문자열을 입력하면 Correct가 정상적으로 출력되는 것을 확인할 수 있다.

     

     

     

     

    플래그를 획득했다!

     

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

    Dreamhack - Secure Mail  (0) 2024.08.04
    Dreamhack - rev-basic-8  (1) 2024.07.23
    Dreamhack - simple-operation  (0) 2024.07.17
    Dreamhack - rev-basic-4  (0) 2024.07.17
    Dreamhack - rev-basic-3  (0) 2024.07.17
Designed by Tistory.