튜기's blogggg

CodeEngn advance #2

by St1tch





실행을 시키면 이러한 창이 뜨고

비밀번호를 입력을 하면 틀리면 꺼진다.

IDA를 연습하기 위해 이제 IDA로 자주 문제풀이를 하려고한다.



우선 스트링을 찾아보고 해당 주소로 찾아 갔다.

딱 봐도 직감적으로 printf와 scanf를 알 수 있다.



우선 printf에 브레이크 포인트를 잡고 디버깅을 해보았다.


여기서 부터 한줄씩 진행하며 변화를 보았다.


진행하다 보면 이부분에서 프로그램이 종료된다 

비밀번호가 틀리면 종료됬기 때문에 이 부분으로 들어가서 다시 살펴보았다.


edx안으로 들어가서 디버깅을 하다 보면 이부분에서 ecx와 43h가 같지않으면 loc_18F88A로 분기하는데

loc_18F88A에서 Exitprocess 함수가 실행되기 때문에 

분기하는 부분에서 프로그램이 종료가 되지않게 비교문을 통과해야 한다.


분기하기 전에 보면 특이하게 비슷하게 반복되는 것을 볼 수있다.


아스키코드로 바꿔보니 특정한 문자가 비교되는 것을 볼 수있었고

모두 같았을 경우 어떤 부분으로 분기하는 것을 볼 수 있었다.


분기하는 부분으로 들어가서 마찬가지로 아스키코드로 바꿔보니

WELL DONE!이 한글자씩 있는 것으로 봐서 

한 문자씩 비교한 것들을 합친 문자열이 password 가 되는 것을 알 수 있었다.


클리어~


블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기