반응형


FSC_Level1.exe


예전에 f-secure? 라는 회사에서 대회를 열었는데, 총 3 레벨까지 문제가 있고, 그 문제 중 1번 문제입니다. 

1번 문제라 그런지 저도 굉장히 쉽게 풀었네요 본론으로 들어가봅시다. 

아직 IDA가 미숙해서 올리디버그랑 병행해서 작성하겠습니다

첨부한 파일을 열어보면 알수 있듯이 굉장히 간단한 프로그램입니다  


키를 물어보는 프로그램인거 같네요 임의의 값을 넣게 되면 다음과 같은 문구가 뜨고 프로그램이 종료됩니다. 


분석할것도 없이 아이다로 열어서 main()부터 쭉내려 보니 conratulation ....과 sorry 문이 보입니다. (공짜로 주는 문젠가 봐요)

(sorry....문자열을 찾아서 문제에 접근하는게 정석입니다)


각 문자열이 저장된 함수로 들어가서 보시면 정확한 문자열을 확인할 수 있습니다 .(원래 이 문제를 풀게되면 메일주소가 나오고 메일 주소로 키값을 보내면 다음 문제의 링크를 줫다고 합니다)



main소스도 살펴보니 굉장히 간단했는데 설명해보자면, int __cdecl stricmp(const char *Str1, const char *Str2)에 인자 

 int __cdecl stricmp(str1 , Dest)이 들어가게되고 Dest는 위에서 보다시피 "\nCongratulations! Please send an e-mail"... 문구가 있는 aCongratulation()입니다 . 


정리해보면 str1 에는 input 값이 들어가게되고, input 값을 Dest의 값과 비교해서 맞을시에는"\nCongratulations! Please send an e-mail"..라는 성공문구가 뜨게됩니다.

 (반대로 , 키값이 다를경우는 우리가 처음에 보았던 sorry 문구가 나오게됩니다 ) 

    .text:690010D4                 jnz     short loc_690010F3 에서 확인 가능 


그래서 stricmp() 의 다음인 .text:690010CF에 break를 걸어주고 임의의 값을 넣어주게되면, 




반응형
,