Phantom

Easy_CrackMe 본문

Pwnable/Reversing.kr

Easy_CrackMe

Ph4nt0m_ 2017. 11. 17. 14:41
반응형
음.... 나는 리버싱을 다시만지는 것은 참 오랜만이다. 
많은 정보를 듣고 머리로 저장만해두고 사용해본적이 오랜만이라는것 또한 같다.

그리고 나는 포너블과 취약점 분석을 더 잘하기 위해 리버싱을 시작했다.
시원포럼에 다녀와서 느낀것을 가지고 리버싱을 시작했다.
첫 문제는 Easy_CrackMe이다.


프로그램을 실행하면 막연히 이렇게 나온다. 저곳에 값을 넣고 확인을 누르면



이렇게 나온다. 이제 분석을 시작해보자.


우선 PEID로 본 결과 C++로 짜여진 것을 알 수 있다.

이뮤니티로 위에서 출력된 Incorrect Password를 찾아보자



위에 스트링 값을 추적해보면 분기가 존재하게 된다. 
위로 올라가서 분기문을 추적해보자.


입력함수 아래서부터 비교값과 루프가 존재한다.


그리고 루프가 끝나는 지점에서 JNZ문을 지나가면 Congratulation을 출력하게된다.

정리하자면
입력한 값과 중간 사이사이에 보인 5y, R3versing등과 비교 하고 분기문을 지나면 성공한다.

실행해보자.

첫번째 비교, 값의 두번째 값과 0x61(a)를 비교한다.


두번째 값 비교 , 다음 배열인 값과 5y를 비교한다.


3번째 비교 루프, R3versing과 입력값을 비교.

루프 안에서 EAX와 ESI의 한바이트씩 떼와서 비교하고 
아래부분에서 다음 바이트 부분을 비교한다.
그리고 둘 다 맞다면 ADD명령어로 2씩 증가시키고 루프를 돌린다.


마지막 비교문, 첫번째 값과 0x45(E)를 비교한다.


풀이완료!!!


이것을 헥스레이로 돌리면 아주 간단한 if문이 보이게 된다.


반응형

'Pwnable > Reversing.kr' 카테고리의 다른 글

Music Player  (1) 2017.11.20
Easy_UnpackMe  (0) 2017.11.17
Easy Keygen  (0) 2017.11.17
Easy KeygenMe  (0) 2016.03.01
[Reversing.kr] – Easy CrackMe  (0) 2016.02.28
Comments