ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - rev-basic-3
    wargame/Dreamhack 2024. 7. 17. 18:49

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

     

     

    이전 문제와 비슷하게 사용자의 입력값을 검증해서 맞으면 correct를, 틀리면 wrong을 출력하는 프로그램이 주어진다.

     

    IDA로 main() 디컴파일해서 함수 들어가보면 위와 같이 vfprintf 함수가 쓰인 걸 볼 수 있다.

     

     

     

     

    그리고 또 다른 함수에서는 _acrt_iob_func()가 0번 스트림(stdin 파일 스트림)을 가져오는 걸 알 수 있다.

     

     

     

     

    그리고 이 입력받은 a1을 처리하는 함수에 들어가보면 xor 연산을 하고 있는 부분을 볼 수 있다.

     

     

     

     

    byte_140003000을 들어가면 위와 같이 나온다. 이걸 이용해서 역연산하여 사용자 입력값이 무엇이어야 하는지 알아낼 수 있다.

     

     

     

     

    main()에 있는 함수명을 위처럼 알아보기 쉽게 변경했다.

     

     

     

     

    위와 같이 배열에 넣고 아까 본 a1을 구하기 위해 역연산하는 C언어 코드를 짜면 된다.

     

     

     

     

    코드를 돌리면 바로 답이 나와서 chall3.exe를 실행하고 해당값을 입력하면 Correct가 뜬다.

     

     

     

     

     

    플래그를 획득했다!

     

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

    Dreamhack - simple-operation  (0) 2024.07.17
    Dreamhack - rev-basic-4  (0) 2024.07.17
    Dreamhack - pathtraversal  (0) 2024.05.28
    Dreamhack - rev-basic-2  (0) 2024.05.27
    Dreamhack - rev-basic-1  (0) 2024.05.21
Designed by Tistory.