티스토리 뷰

level05의 힌트를 보면 등록키를 물어보네요.


실행을 하면 인증과정이 나옵니다. 일단, 등록되지 않은 사람과 시리얼 키 값이 입력이 되있고 등록을 해보면 False가 나옵니다. 유추를 해보자면 정확한 user와 registration key를 가져와서 입력해야 하는 루틴이 있을 겁니다.

Exeinfo PE로 본 결과 UPX로 패킹이 되어있네요.


UPX의 대명사 PUSHAD가 보입니다. 이런 UPX는 쉽게 우회할 수가 있습니다.


코드가 짧기 때문에 맨 밑을 보면 JMP가 있을 겁니다. 그 부분을 BP걸고 들어가 봅시다.


메인 화면이 나오네요. 여기서부터 분석을 시작하면 되는데, 하다가 오류나면 처음부터 다시 해야하니까 스냅샷을 찍는 것을 추천드립니다. 또한 덤프를 뜨는 방법도 추천드립니다. 


아까 오류창에 뜬 문자열을 타고 들어가서 BP걸고 실행을 해보니 실행을 하네요. 일단, 어떻게 동작하는지 알아보기 위해서 오류 값을 그대로 넣고 트레이싱 해보겠습니다.


이 두부분은 EditText값에 문자열이 있는지 없는지 확인하는 루틴입니다. 하나라도 비어있다면 바로 오류가 납니다.


위의 부분을 넘어가면 아래 루틴이 보이는데 첫 번쨰로 [LOCAL.1]부분(인자로 줬던 USER값)을 옆의 아스키 코드 "Registered User"와 비교합니다. 여기서 비교하는 루틴을 알 수가 있습니다.


그 밑의 부분도 똑같습니다. 시리얼 값을 입력한 것과 비교하네요. 답은 박스 안에 있습니다.


값이 일치하다면 아래와 같이 성공, 실패 루틴으로 나눠집니다.


아스키 코드를 그대로 입력했더니 성공을 하네요.


'Wargame > codeengn' 카테고리의 다른 글

[codeEngn] Basic RCE level07  (0) 2015.07.28
[codeEngn] Basic RCE level06  (0) 2015.07.28
[codeEngn] Basic RCE level04  (0) 2015.07.28
[codeEngn] Basic RCE level03  (0) 2015.07.28
[codeEngn] Basic RCE level02  (0) 2015.07.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함