이 문제는 바이너리 파일만을 제공하기 때문에 소스코드는 따로 보여주지 않는다.

1. 문제 해결을 위한 필요 역량

2. write-up

Using IDApro

우선 대략적 진행 과정을 보기 위해 IDApro를 열어본다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/708665cc-9351-4fec-8fbf-cf45a22ee2e5/_2021-07-13__12.31.42.png

다음과 같이 sub_140001350에서 메인 함수를 찾을 수 있었다.

INPUT에 값을 넣으면 맞는지 틀린지에 따라 출력을 달리하는 것을 알았다.

그러면 조건을 확인하는 곳을 봐보자.

call sub_140001440에서 함수를 호출후, 'test eax, eax'라는 구문에서 비교를 통해 jz shot loc_1400013B6을 통해 Wrong인 분기문으로 가게 된다.

<aside> 💡 test eax, eax는 eax가 0인지 확인하는 구문이다. 참이라면 ZF를 1로 아니면 0으로 변경된다.

</aside>

jz는 "jump if zero" 라는 의미인데 ZF의 값이 0이면 해당 주소로 jump한다는 의미이다.

그러면 해당 함수에서 return되는 값이 true인지 false인지를 판단하는거니 sub_140001440를 봐보자

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/721de6ce-3b29-4754-abaa-24d1efb3a95b/_2021-07-13__12.46.20.png