Easy Crack

첫번째 문제로 들어가보겠습니다 :D

프로그램 실행

프로그램을 실행한 다음 어떤 값을 입력하라고 합니다!

 

그랬더니 잘못된 값을 입력하면 "Incorrect Password"라는 경고메시지가 뜹니다😶

 

그럼 "x32dbg" 툴을 이용하여 동적분석을 해보도록 하겠습니다!

문자열 검색

"Incorrect Password" 문자열을 검색한 후 해당 함수의 EP에 BP를 걸었습니다.

1,2번째 분기점

1번째 분기점에서 제가 입력한 문자열의 1번째 문자를 비교하지않고 2번째 문자를 "a"와 비교하더군요!

즉, 제가 "TEST"라는 값을 입력하면 "E" 와 "a"를 비교하여 jne 같지 않으면 바로 비교가 끝이납니다.

 

2번째 분기점은 1번째 분기점 이후 2개의 문자를 "5y"와 비교합니다😊

즉, "TEST"에서 "ST"와 "5y"를 비교하여 같지 않으면 바로 비교가 끝이 납니다.

3번째 분기점

3번째 분기점에서는 이후 문자열을 "R3versing"과 계속 비교를 하게 됩니다.

마지막 분기점

그리고 마지막 분기점에 보니 제가 입력한 문자열의 첫번째 문자를 비교하고 있습니다.

 

다른것과 동일하게 분석을 했으며 자세히 설명해보겠습니다😊

 

cmp byte ptr SS:[esp+4], 45

 

[esp+4] 는 esp의 주소값에서 4를 더한 곳의 주소를 45(E)와 비교하고 있습니다.

밑에 보면 친절하게 [ESP+4]가 무엇인지 가르쳐주고 있죠😄

 

하지만 스택에서 한번더 확인해봅시다!

스택

스택에서 보면 오른쪽에 [ESP+4]의 값이 79라고 생각할 수 있겠지만 리틀엔디언방식으로 들어가기 때문에

뒤에서 부터 읽어야합니다😄

 

해당 스택 값을 변경하기 옵션으로 다시 확인해보면 제가 넣은 문자가 거꾸로 스택에 PUSH된다는 것을 알 수 있죠!

(캡쳐 당시 프로그램 실행 후 "Ea5y"를 넣었습니다.)

Congreatulation!!

모든 분기가 끝이 난 후

"Congratulation!!" 이 출력되는 것을 확인할 수 있습니다😋

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

Easy Unpack (Point : 100)  (0) 2020.10.07
Easy Keygen (Point : 100)  (0) 2020.10.06