old

Suninatas / System 27 (바이너리 속 어셈블리어)

nopdata 2016. 7. 21. 21:21

# System 27 - Can you speak x86

거의 답을 보고 푼 문제이다. 어떻게 이걸 유추해 내었는지 아직 잘 모르겠다.

문제는 의미가 없고 Can you speak x86이 힌트란다. 아무래도 어셈블리어를 할 줄 아는지 물어보는 듯 하다.


제공되는 파일은 다음과 같은 텍스트 파일이다.

< 문제 파일 >


긴 영문이 있지만 굳이 해석할 필요가 없다. 문자열에는 의미가 없기 때문

이 메시지를 Hex Editor를 이용하여 열어 hex값을 복사하고 그 값을 ollydbg에 올려 어셈블리코드 그대로 실행을 하면 된다


< assemble code >

위처럼 올리디버거에 아무 프로그램이나 올려 놓고 시작지점부터 Binary Edit를 이용하여 붙여넣으면 된다.

대부분의 어셈블리 코드는 점프문으로 분기를 하고 신경써야할 부분은 INC, DEC ESP와 INC, DEC EAX, 그리고 PUSH EAX이다.

EAX에 여러번 더하거나 빼서 PUSH EAX를 하게되면 스택에 쌓이는데 여기서 스택에 쌓인 EAX값의 마지막 2바이트를 아스키코드로 변환을 하면 된다. 단, ESP를 더하거나 빼서 기존에 PUSH 되었던 EAX값이 쌓이지 않는다. 해서, PUSH 될때 마다 확인을 해야 한다.

PUSH 된 EAX들을 종합해 보면 키 값을 얻을 수 있다.


Suninats Answer : key_is_accbggj





'old' 카테고리의 다른 글

XCZ.kr / Prob1 (포렌식, 파일카빙)  (0) 2016.07.22
Suninatas / Forensic 29 (디스크 이미지 분석)  (0) 2016.07.21
Pwnable.kr / uaf  (0) 2016.07.21
포포포포렌식 #3  (0) 2016.07.12
System #1  (0) 2016.07.08