본문 바로가기

CTF

[reversing.kr] Easy Crack 풀이

http://reversing.kr/index.php

 

문제를 다운받아 실행해보았다.

시리얼값이 아닐때 나오는 메시지를 확인.

디버거를 이용해서 그 내가확인한 메시지를 찾아보니 성공메시지도 보인다.

둘다 근처에있을테니 아무거나 눌러서 가보자.

성공과 실패 메시지가 조금위에있는 jne 조건 에의해서 나뉘고있는거같다.

그래서 일단 DDDDD 를 입력해서 실행을해보니 저 조건까지 가지도못하고 실패 메시지가 나오길래

중간에 다른 조건문이있다고 생각하고 조금 위로 올려보니

jne로 먼저 조건을 하나 보던게있었다. esp+5위치에 있는 값이 'a' 인지를 물어보는건데.

esp 우클릭 - 덤프에서 따라가기

이부분이 esp가 위치한곳이다.

+5라고 했으니 보면 두번째로 입력한 D 가 a인지를 물어보는상황.

시리얼값을 다시 변경해서 해보자.

두번째 값을 a 로 바꿔줬다.

시리얼값에서 두번째값이 a 이어야 한다는 조건은 넘어갔다.

그후에 또 esp+A 부분의 값을 찾고있는데 조금아래에보면 '5y' 와 비교를 하는 함수로 이동하게된다.

esp+A 는 내가 시리얼값을 'Da' 라고만입력해서 지금은 없다. 채워주자.

Da5y 로 두번째 조건도 잘나왔다.

더 아래로 내려가니 R3versing 라는 문자열을 가지고 뭘하려하는거같은데

실행시켜보면 한바이트씩 비교를하는 반복문을 도는것을 알수있었다.

시리얼값 추가하자

Da5yR3versing 라고 입력한후 다시 디버깅하였다.

끝이라고 생각했지만 맨처음에 보았던

성공메시지와 실패메시지를 정하는 부분이 남아있었다.

esp+4위치의 값이 E 인지를 물어보고있는데 esp+4의 위치는 내가입력한 시리얼값의 첫번째 값을말하고있다.

시리얼값 변경하자.

끝.