카테고리 없음

[CodeEngn] Advanced RCE 1

미숫가루빙수 2024. 5. 26. 23:58

 

몇 초 후에 종료되는지 찾고 해쉬값을 변환 해야하는 문제이다.

과거 이 문제를 풀었을 때 sub, cmp, jnb의 공식을 기억해야한다.

 

 

 

파일을 다운받고 확인해보면 다음과 같이 upx로 압축되어있는 것을 확인할 수 있다.

우선 upx 압축을 풀어주고 실행해야한다.

 

 

압축을 푼 뒤의 exe파일을 실행시키면 위와 같은 창이 뜬다.

이번에는 immunity debugger로 열어보겠다.

 

 

 

디버거로 실행시키니 아까와는 다른 창이 뜬다.

여기서 우회를 해주기 위해 IsDebuggerPresent함수를 찾아준다.

 

 

우회를 하기 위해 JNZ를 JE로 어셈블시켜주고 파일을 새롭게 저장한다.

 

 

저장을 완료한 exe파일을 디버거에서 다시 실행시키면 맨 처음에 뜬 메시지 박스와 동일하게 뜬다.

 

여기서 시간과 관련된 함수인 timeGettime함수를 찾아야한다.

 

 

여기에 브레이크를 걸어둔다.

이번에는 JNB로 들어가본다.

 

 

맨 처음에 설명한 공식이 있다.

여기서 EAX와 EBX+4를 비교한다.

EBX+4를 계산하면 8AF87C이다.

 

 

헥스 창에서 다음 주소로 이동을 하면 33 7B가 뜬다.

이것을 10진수로 바꿔주면 13179가 된다.

 

정답은 13179