본문 바로가기

카테고리 없음

[리버싱] Exercise: rev-basic-1

드림핵 워게임 rev-basic-1 풀이를 진행해보겠습니다.

이 문제도 앞선 rev-basic-0과 마찬가지로

사용자에게 문자열을 입력받고 검증한 후

Correct나 Wrong을 출력하는 프로그램입니다.

 

 

IDA로 파일을

main함수를 찾아 바로 F5를 이용해

디컴파일을 해줍니다.

main함수를 디컴파일하면 이런 화면을 보실 수 있습니다.

전에 했던 실습과 동일하게 sub_1400013E0 함수는 printf,

sub_140001440 함수는 scanf 함수입니다.

 

 

위에 두 함수에 대해 알게 되었으니

바로 if 문에서 입력값 검사를 하고 있는 함수인

sub_140001000 함수로 들어가 줍니다.

함수를 살펴보면 ai인자는 우리가 입력한 값을 뜻합니다. 

이 함수는 여러개의 if 문으로 이루어져 있는데

이 조건문들을 해석해보면 1바이트 단위로 값을 비교해주고 있습니다.

입력해야 하는 문자열의 각 인덱스 값이 정해져 있고

정해진 값과 모두 일치한다면

Correct를 출력하는 함수임을 알 수 있습니다.

 

이제 이 숫자들을 아스키코드로 변환해 보도록 하겠습니다.

IDA에서는 숫자로 문자를 변환하는 기능을 단축키 r을 통하여 제공하고 있습니다.

 

이를 이용해 숫자들을 모두 문자로 바꿔주면 이렇게

Compar3_the_ch4ract3r

라는 문장을 얻을 수 있습니다.

 

이렇게 Windows PowerShell을 이용하여 확인해봤을때

예상과 같이 Correct 가 출력됨을 알 수 있습니다.