안녕하세요. 오늘은 codeengn의 bagic rce level7을 풀어보겠습니다.

홈페이지로 들어가 codeengn bagic rce level7을 눌러주세요.



니가 입력한 시리얼은 올바르지 않다라고 뜨는군요. 또한 문제에서 보시면 c드라이브 이름이 CodeEngn일 경우 시리얼이 생성될때 CodeEngn은 어떤것으로 변경되는가 라고 나와있습니다. c드라이브 이름이 CodeEngn일 경우라고 했으니 c드라이브 이름을 바꿔줍시다. 

그리고 올리디버그로 열어봅시다.

일단 오류메세지박스가 뜨는 부분을 먼저 봅시다.

에러가 뜨는 박스와 well done박스가 보이는군요. 당연히 이런 갈림길박스 위에는 비교함수cmp가 있기 마련입니다. 위로 조금만 올라가서 비교함수를 봅시다.

그림의 맨위를 보시면 CMP EAX, 0 이 보입니다. CMP 함수는 CMP 변수,변수 로 형식이 되어있으며 앞의 변수에서 뒷변수를 뺀 값이 0이 나올 경우 참을 반환하는 함수입니다.

즉 저위에선 EAX-0=0이 되어야 참이 된다는 소리입니다. 참이 됐을 경우 밑의 JE Short에 의해 00401117로 이동하게 됩니다. 00401117은 보시면 아시겠지만 성공박스가 뜨는 곳입니다.

즉 우리는 EAX가 0이 되게 만들어 줘야 합니다. 일단 CMP함수에 F2번을 눌러 브레이크를 건 후 실행시켜 보았습니다.

보시다시피 EAX값이 1이 되어있군요. 그래서 CMP에서 거짓을 반환하기 때문에 에러박스가 뜨는 겁니다. 그런데? 위의 함수를 자세히 보시면 이상한 문구가 있습니다.

Enter your serial 문구가 있습니다.Enter your serial은 어디서 많이 보지 않았습니까?

네 바로 이 문구 입니다. 그리고 그밑에 L2C-5781EqfgEngn4562-ABEX가 있습니다.

딱봐도 시리얼로 보이는 숫자긴 합니다. 그리고 맨 위의 함수를 보시면 stringToAdd가 있군요. 직역을 해보니 문자를 추가한다 라는 뜻같네요. 즉 EqfgEngn4562-ABEX란 문자열에 L2C-5781을 추가한 것 같습니다. 그런데 EqfgEngn4562-ABEX이 문자열은 대체 어디서 온것일까요? 그래서 문자열을 일단 전부 보기로 했습니다.

오른쪽 마우스를 눌러 아래와 같이 들어가 모든 문자를 봅시다.

문구가 많군요. 위쪽의 두번째 줄을 보시면 EqfgEngn4562-ABEX가 보입니다. 더블클릭 해봅시다.

예상대로 4562-ABEX가 EqfgEngn에 추가된 문자열이었습니다. 그럼 EqfgEngn는 대체 어디서 왔을까요? 그러고보니 우리가 올리디버깅에 앞서 하드디스크 이름을 CodeEngn이라고 줬었죠. Engn이 같은 걸로 보아 CodeEngn이 변형된 이름은 아닐까하고 생각이 듭니다.

앞서 문제에서 시리얼이 생성될 때 CodeEngn이 바뀐다 했으므로 일단 시리얼처럼 보이는

L2C-5781EqfgEngn4562-ABEX를 넣어봅시다.

시리얼 넘버가 맞군요. 시리얼넘버가 생성된 것입니다. 그리고 생성될때 CodeEngn의 값이 바뀐다 했으니까 아무래도 바뀐 값은 EqfgEngn인 것 같습니다. 한번 인증해 봅시다.

codeengn사이트의 challenges - continue를 눌러 인증해봅시다.

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

이것으로 문제풀이를 마치겠습니다. EAX로 풀려다 이상하게 문제를 풀었네요. 쩝...

뒷정리로 하드디스크 이름은 원래대로 해놓읍시다.

'codeengn' 카테고리의 다른 글

codeengn - basic rce level9  (0) 2015.08.05
codeengn - basic rce level 8  (0) 2015.08.05
codeengn - basic rce level4  (0) 2015.07.20
codeengn - bagic rce level3  (0) 2015.07.20
codeengn - basic rce level2  (0) 2015.07.15
Posted by englishmath
,