-->

[CodeEngn] Basic RCE L16 풀이

CodeEngn Basic RCE L16 문제 확인

CodeEngn Basic RCE L16 문제는 L14, L15 문제와 동일하게 Name이 CodeEngn일 때의 시리얼 값(여기서는 password 값)을 찾는 문제이다.

 

 

 

파일을 실행시켜보니, 아래와 같이 Name과 Password 값을 받고 있다.

 

 

 

CodeEngn Basic RCE L16 풀이

CodeEngn Basic 문제들은 대부분 string에서 관련 문자열을 찾으면 대부분 정답에 근접해질 수 있게끔 구성이 되어있다. 이번에도 역시 Password 체크 분기문에 접근할 수 있는 'Godd Job'이라는 문자열을 사용하는 함수를 찾는 것에서부터 문제 풀이를 시작한다.

 

 

 

해당 문자열이 사용된 함수로 가보니, 아래와 같이 password를 체크하는 분기문을 찾을 수 있었다. 꽤나 복잡해보이지만문제의 목적은 password 값을 찾는 것이므로 공부 목적이면 몰라도 문제 풀이를 위해선 이것을 다 분석할 필요는 없다. eax와 [ebp+var_3C]를 비교하고 있으므로 Name에 CodeEngn을 입력했을 때의 eax와 [ebp+var_3C]를 확인해보면 어떤 값이 password인지 확인할 수 있다.

 

 

 

cmp 부분에 bp를 걸고 실행시킨 후 Name에 CodeEngn을 넣었다.

 

 

 

아까 IDA에서는 자세히 확인하지 못했지만 eax와 비교하는 값은 ss:[ebp-3C]이다. eax는 1234 (0x4D2)이기 때문에 password 값은 ss:[ebp-3C]이다. 여기서 ss는 스택 세그먼트이기 때문에 스택창에서 확인해주어야 한다. ebp-3C에 해당하는 70FEEC 주소를 스택창에서 찾아 값을 확인해주면 그 값이 password 값이다.

 

 

 

password 값은 당연하게도 10진수로 변경한 후 입력해주어야 한다.

 

 

'리버싱 > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L18 풀이  (0) 2020.03.05
[CodeEngn] Basic RCE L17 풀이  (0) 2020.03.02
[CodeEngn] Basic RCE L15 풀이  (0) 2020.02.29
[CodeEngn] Basic RCE L14 풀이  (0) 2020.02.27
[CodeEngn] Basic RCE L13 풀이 (.net 디컴파일)  (0) 2020.02.26

댓글

Designed by JB FACTORY