문제사이트 : Reversing.kr
문제이름 : Replace
링크 : http://reversing.kr/challenge.php
풀이
↑프로그램을 실행하고 Check 버튼을 누르면 나오는 화면
문제의 시작부터 상당히 불친절하다.ㅎㅎ
↑올리디버거로 보아하니 이 부분에서 오류가 난다. 아마도 EAX값과 같은 메모리 주소가 없어서 예외처리가 나는것으로 보인다. 90은 NOP인데, 아마도 correct로 가지 못하게 하는 코드부분의 주소값을 이 부분에서 NOP처리하게 만들면 정상실행이 될 것 같이 보인다.
(correct로 가지 못하게 하는 점프문은 401071이다)
↑물론 이렇게 직접 EAX값을 수정해 주면 Correct를 볼 수 있다. 하지만 문제는 우리가 무슨값을 입력해야 Correct가 나오는지 알아야 하기 때문에 의미가 없다고 할 수 있다.
↑일단 우리가 입력한 값이 어떻게 변화하는지 보기위해 BP을 걸고 확인하여 보았다.
입력한 값은 4084D0 이라는 곳에 저장이 된다.
↑쭉 넘어가 보니 몇몇 연산들이 보였다.
대충 보자면 함수들을 호출하여 4084D0에 INC를 해주는 모습이다. 순서를 따져보자면
입력한 값 + 0x1 + 0x1 + 0x601605C7 + 0x1 + 0x1
으로 정리해 볼 수 있다.
즉 정리해 보자면
입력한값 + 0x601605CB = 0x401071 이다.
계산기 조금만 뚜드려 보면 답을 알 수 있다.
'Reversing > WriteUp' 카테고리의 다른 글
[Reversing.kr] CSHARP (0) | 2017.02.21 |
---|---|
[Reversing.kr] Ransomware (0) | 2017.02.21 |
[2017codegate] BabyMISC (0) | 2017.02.17 |
[Reversing.kr] Easy Crack (0) | 2017.02.12 |
[xcz] Prob9_Easy Reversing (0) | 2017.02.10 |