안녕하세요. 오늘은 basic rce level 18 문제를 풀어보겠습니다.

홈페이지로 들어가 basic rce level 18을 눌러주세요.

Name이 CodeEngn일때 시리얼을 구하는 문제네요. 파일을 받아봅시다.

흠 이름과 시리얼을 적는 부분이 나오네요.

올리디버그로 열어 봅시다. 재생버튼을 누른 후 텍스트를 확인해 봅시다.

성공과 실패 문자열이 보입니다. 들어가 봅시다.

 

JE를 이용해 성공문자열쪽으로 점프하는군요. JE는 비교함수에서 쓰이는 두 변수의 값이 같을 때 점프 합니다. 그런데? 늘 보던 비교함수 CMP가 없습니다. 그럼 뭐가 비교함수인걸까요?

위쪽의 박스친 곳을 보시면 lstrcmpi라는 함수가 있습니다. lstrcmpi는 문자열을 비교해주는 함수입니다. 즉 이 두값이 같아야 JE에서 인식을 하여 성공문자열로 점프합니다.

그런데 뭐와 뭘 비교하는지가 안나와있군요. 그래서 프로그램을 실행시켜 대입을 해보겠습니다. 실행 전 확인을 위해 비교함수 밑쪽에 브레이크를 걸어주세요.

check를 눌러주세요.

확인을 하면 두 변수에 값이 나와있는 것을 확인하실 수 있습니다.

하나는 06162370056B6AC0구요. 하나는 1로 나오는군요. 즉 시리얼은 string1 에 저장된다는 것을 알 수 있습니다. 그렇다면 Name은 위의 06162370056B6AC0이겠군요. 두 변수의 값을 같게 해줘야 하므로 시리얼을 06162370056B6AC0로 바꿔줘봅시다.

성공문자열이 뜨는 것을 볼 수 있습니다. 아무래도 이시리얼이 정답인 것 같군요.

인증하러 가봅시다.

 인증~

다음 문제가 뜨는 걸로 보아 정답인 것 같습니다.

네 이것으로 문제풀이를 마치겠습니다.

 


 


 


'codeengn' 카테고리의 다른 글

codeengn - basic rce level 19  (0) 2015.10.02
codeengn - basic rce level 16  (0) 2015.10.02
codeengn - basic rce level 17  (0) 2015.09.25
codeengn - basic rce level 15  (0) 2015.08.18
codeengn - basic rce level 14  (0) 2015.08.18
Posted by englishmath
,