리버싱 엔지니어링/드림핵
rev-basic-0
흰싸라기
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 함수에서 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{} 형식 안지켜서 한번 틀렸다. 주의해야지