티스토리 뷰

level19번의 문제입니다. 이 프로그램은 키 값을 알아오는 것이 아닌 새로운 문제였습니다. 이프로그램이 며 밀리세컨드 후에 종료 되었는가를 물어보았으니 종료하는 시점을 찾으면 되겠습니다.



실행을 하면 메시지박스가 하나 뜨고 한 10초 정도 있다가 프로그램이 종료가 됩니다.



Exeinfo PE를 보면 EP Section에서 UPX1이 보입니다. 




PEview 를 사용하여 보면 UPX로 패킹이 되어있는 것을 볼 수가 있습니다. 



처음에는 수동으로 언패킹을 하려고 했는데 코드가 너무 복잡해서 실패하고 그냥 upx툴을 이용했습니다. 


크기를 보면 366KB -> 598KB 로 증가 했습니다.



PEview 로 다시보면 깔끔하게 섹션 부분이 나타난 것을 볼 수가 있습니다. 오른쪽의 그림은 OEP(00417770)입니다.

 




import로 불러오는 함수들의 목록을 보면 시간을 제어하는 함수들이 있습니다. QueryPerformanceCounter() 함수는 마이크로초 단위 까지 거의 정확하게 측정이 가능합니다. 시간을 측정하는 방법은 CPU의 쿨럭을 이용해서 CPU의 진동을 통해 얼마나 시간이 흘렀는가를 판단하기 때문에 아주 작은 시간차도 측정이 가능합니다. QueryPerformanceFrequency() 함수는 초당 틱값을 출력합니다.



아래는 SetTimer와 KillTimer의 인자에 대한 설명입니다.



하지만 위의 함수들로는 종료된지 몇 초가 지났는지는 찾을 수가 없습니다. 그래서 아래를 훑어서 보다가 timeGetTime이라는 함수를 보게되었습니다. 처음에는 알지 못해서 찾아봤습니다.



timeGetTime() 함수는 윈도우가 시작되고 난 뒤에 지난 시간을 DWORD형 데이터로 얻는 함수이고 시간 단위는 1/1000초(ms단위) 입니다. 이 문제에 제일 적합한 함수 같아서 BP를 걸고 분석을 진행 했습니다.





00444C44 줄은 timeGetTime을 실행하는 함수입니다.




실행을 하면 EAX에 02BD461B가 반환이 됩니다. 즉, 윈도우가 시작되고 난뒤에 지난 시간의 값입니다.





00444C4D 줄은 EAX(timeGetTime이 반환된 값)을 ESI에 저장합니다.



00444C55 에서는 [ESP+14]에 있는 주소 값을 EBX에 저장합니다.



아래 EAX 값은 두 번째 timeGetTime() 함수를 실행해서 00444C5F 줄을 실행한 레지스터 창입니다.



00444C61 줄에서 EAX(두 번 째 실행된 timeGetTime 값)와 ESI(첫 번 째 실행된 timeGetTime 값)을 비교하여 00444D38 줄로 점프를 합니다.



00444D38 줄에서는 EAX(두 번 째 실행된 timeGetTime 값)와 ESI(첫 번 째 실행된 timeGetTime 값)을 빼서 EAX에 저장을 합니다. EAX-ESI = 0001A09B 가 되었습니다.



00444D3A 줄은 방금 위에서 구한 EAX와 [EBX+4]주소에 있는 4바이트 값을 비교합니다. 



아래는 비교하는 값들입니다. [EBX+4] 주소에 있는 2B70이 의심스러워서 10진수로 바꿔봤습니다.

 -------------->


10진수로 변경된 값은 11120이 됩니다. 11120ms 라는 것을 확인 가능합니다. 

1 ms = 0.001s 이므로 11120을 1000으로 나누면 11.12초가 됩니다. 아까 맨 위에서 말 했듯이 10초정도가 걸린다고 했었는데, 1.12초가 더 걸렸네요.




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

[codeEngn] Basic RCE level18  (0) 2015.07.30
[codeEngn] Basic RCE level17  (2) 2015.07.30
[codeEngn] Basic RCE level16  (0) 2015.07.30
[codeEngn] Basic RCE level15  (0) 2015.07.29
[codeEngn] Basic RCE level14  (0) 2015.07.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함