Basic RCE L19

HelloMG
|2020. 4. 7. 22:11

Basic RCE L19 문제

문제를 보니 프로그램이 종료되는데 걸리는 시간을 찾으라고합니다 :D

PUSHAD

PUSHAD가 시작되는건 패킹이 되어 있다는 소리이니 편의상 언패킹 후 진행 하겠습니다!

프로그램 실행

프로그램을 실행시키면 이런 메시지 박스가 뜹니다...!

그래서 뭔가 이상해서 함수가 터지는 곳을 들어가 보았습니다 :D

IsDebuggerPresent

들어가니 IsDebuggerPresent 함수가 보입니다!

IsDebuggerPresent 함수는 디버깅을 탐지하는 함수로써 디버깅중이면 EAX값을 1로 반환합니다 ㅎㅎㅎ

저는 디버깅하여 분석을 해야하니 여러방법이 있지만

그 중 가장 간단한 방법인 EAX를 0으로 변환시켜 계속 분석을 진행했습니다 :D

!?

그러자 다른 메시지박스가 나오는군요 :D

 

여기서 계속 갈피를 못잡고 있다가 시간을 찾아야하는데 그에 관한 함수인 timeGetTime 함수가 보였습니다!

그래서 브레이크를 걸고 다시 실행을 해보았습니다 :D

timeGetTime

IsdebuggerPresent함수를 우회한 후 [F9]를 눌렀는데 딱 잡히는 부분이 있었습니다!

디버깅 탐지 우회를 하지 않고 실행했을 땐 잡히지 않았는데 우회하니 보이더라구요!

분기점

timeGetTime함수를 실행시키고 난 후 어떤 한 분기점을 마주칠 수 있었습니다 :D

EAX와 [EBX+4]의 값을 비교하는 것인데

EAX에는 timeGetTime함수로 현재 시스템 시간을 반환하여 담은 값이고 [EBX+4]에는 어떤 시간값이 담겨져있겠죠 :D?

 

그래서 [EBX+4]를 확인해보니 2B70이 담겨져 있는 것을 확인해볼 수 있었습니다!

그래서 이게 혹시 프로그램을 종료시키는 값이지 않을까 생각해서 체크해보니

정답이였던 것을 확인해 볼 수 있었습니다 :D

 

다른 문제에 비해서 갑자기 난이도가 확 올라간 문제가 아닌가 싶네용..!!

좀 엉성하지만 이만 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L18  (0) 2020.04.02
Basic RCE L17  (0) 2020.04.01
Basic RCE L16  (0) 2020.03.31
Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28