반응형

16.exe
1.23MB

 


 

x32dbg로 문제 파일을 열면 바로 EP를 확인할 수 있다.

 

 

문자열 찾기 기능을 이용하면 위와 같이 문자열이 뜨는데, "Good Job!\n" 문자열을 더블 클릭하여 이동한다.

 

 

"Good Job" 문자열이 출력되는 부분에서 스크롤을 조금 위로 올리면 40159F 주소에 cmp 명령어가 있다.

 

이 cmp 명령어의 결과에 따라 일치했을 때와 일치하지 않을 때의 문자열을 띄우는 부분으로 점프한다.

 

 

이 부분이 암호화 알고리즘 부분이다.

 

 

ebp-3C 주소에는 D8017이라는 값이 들어있는데, 이 값을 eax에 저장하고 D8017과 ACE80을 곱한 값인 E4B88D80를 edx에 저장한다.

 

그리고 ebp-3C의 주소가 70FEEC 인데 이 주소를 eax에 담고, D8017과 위에서 곱한 값이 들어있는 edx의 값을 더한 값인 E4C60D97을 70FEEC 주소에 저장한다.

 

그리고 ebp-40에 있는 값인 70FFCC를 eax에 담고 eax와 ebp-3C의 값을 비교한다.

 

그렇다면 eax에는 내가 입력한 값이 들어가고, ebp-3C 주소에 들어간 E4C60D97은 Serial 값이 16진수로 변환된 값이다.

 

 

실제로 CodeEngn / 10을 입력하고 cmp 문에서 멈추게 되면 eax에는 10이 16진수로 변환된 A가 저장되어 있다.

 


풀이

 

 

위에서 분석한대로 E4C60D97의 값을 10진수로 표현한 3838184855 값을 Serial 값으로 입력하면

 

 

그러므로 문제의 답은 3838184855이다.

반응형

'전쟁 > codeengn' 카테고리의 다른 글

[codeengn] Basic RCE 18  (0) 2022.10.14
[codeengn] Basic RCE 17  (0) 2022.10.12
[codeengn] Basic RCE 15  (0) 2022.07.30
[codeengn] Basic RCE 14  (0) 2022.07.30
[codeengn] Basic RCE 13  (0) 2022.07.29

+ Recent posts