ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - rev-basic-8
    wargame/Dreamhack 2024. 7. 23. 22:13

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

     

     

    1단계 문제 중에서는 rev-basic 시리즈 마지막 문제다.

     

    메인함수 ida로 디컴파일하면 이전 문제들과 동일하게 생겼다.

     

     

     

     

    -5가 좀 이상해 보여서 커서 올려놓고 h 눌러서 헥스값으로 바꿔본다.

     

     

     

     

    그러면 0xFB가 나오는데 이건 251이다.

    rev-basic-4 문제와 개념적으로 조금 비슷한 문제인 것 같다.

     

     

     

     

    byte_140003000을 더블클릭해서 어떤 데이터가 들어있는지 확인한다.

     

     

     

     

    Hex View탭으로 가서 복사해오기

     

     

     

     

    이전 문제들과 다르게 헷갈리는 부분이 있어서 드림핵 해당 문제 커뮤니티 페이지에 있는 댓글을 참고했고, 위와 같이 코드를 작성하기 위해 짚고 넘어가야 할 것은 아래와 같다.

     

    • 16진수 바이트로 표현되기 위해 %(16 * 16)을 해야 하는데, 이는 & 0xFF와 같음
    • ida에서 봤던 문장에서 251 * a1 % (16 * 16) == byte140003000[i] % (16 * 16)이 되도록 하는 0 ~ 255 사이의 a1을 찾아야 하는데, 여기서 251의 모듈러 역수인 51을 양변에 곱하면 된다. 51을 곱하는 이유는 51 * 251을 256으로 나눈 나머지값이 1이 되기 때문이라고 한다. 즉, 구해야 하는 a1은 byte140003000[i] * 51 % (16 * 16)으로 구할 수 있다.

    암호학의 모듈러 연산 개념이 여기서 쓰인다.

     

     

     

     

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

     

     

     

     

    chall8.exe를 실행시키고 해당 문자열을 입력하면 Correct가 출력되는 것을 볼 수 있다.

     

     

     

     

    플래그를 획득했다!

     

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

    Dreamhack - Inject ME!!!  (0) 2024.08.05
    Dreamhack - Secure Mail  (0) 2024.08.04
    Dreamhack - rev-basic-6  (1) 2024.07.23
    Dreamhack - simple-operation  (0) 2024.07.17
    Dreamhack - rev-basic-4  (0) 2024.07.17
Designed by Tistory.