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