흰싸라기 2022. 3. 31. 15:53

드림핵 rev-basic-0 문제 : https://dreamhack.io/wargame/challenges/14/writeups

 

rev-basic-0

Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출

dreamhack.io

어떤 값을 입력해야 correct가 출력되는지 알아내는 기본 문제이다. 

 

1. main

main

  • main 함수에서 correct, wrong의 경우가 나누어지는 것을 확인할 수 있다
  • jz의 조건분기문 확인, 여기서 나누어지는 것으로 예상
  • test eax, eax 위 call 함수 발견, 여기서 return된 값으로 test 후 나누어지는 것을 추측할  수 있음.

→ call 코드를 F7로 들어가보자

 

2. call

  • call strcmp가 보임 → 문자열비교
  • call strcmp 결과에 따라 1 또는 0을 return하는 모습
  • "Compar3_the_str1ng" 문자열 발견
    • 해당 값 넣고 실행시 correct

 

따라서 답은

더보기

DH{Compar3_the_str1ng} 

 

후기)

딱히 꼬인것없이 그냥 정석 느낌? 그래서 처음 리버싱 문제로 풀기 좋은 것 같다. 그리고 올리디버거 쓰다가 IDA로 처음 해보는건데 IDA툴이 매우 편함을 알 수 있었다,, 

다만, 처음이라 DH{} 형식 안지켜서 한번 틀렸다. 주의해야지