본문 바로가기
Reversing/Wargame

[CodeEngn] Basic RCE L07

by sseddi 2021. 2. 25.
728x90

문제 파일을 받고 실행시켜보자

serial check 프로그램 같다

 

디버거에 넣어본 뒤에

[Search for] - [All referenced text strings] 를 이용해서

성공메시지 부분을 찾았다.

그곳으로 이동해보자

 

이동해보면 주변에 함수들이 되게 많아서 함수들을 살펴보았다.

 

좀만 더 위로 올리면

이 함수를 확인해볼 수 있었는데,

문제에 '컴퓨터 C드라이브의 이름이 CodeEngn일 경우 시리얼이 생성될 때'라고 했으므로 C드라이브의 이름을 받는 함수가 있을 것 같았다.

아마 GetVolumeInformationA 함수가 그 역할을 할 것 같다.

종단점 설정해주고 재시작을 해보자

f7로 들어가보면

잘 모르겠다. 

나와서 f8로 한 줄씩 디버깅 해보자

 

serial 창에 임의의 숫자인 1111을 입력해준 뒤 살펴보니

밑에 String2에 1111이 들어가 있다. 그 밑에 String2와 비교하는 것일까

 

사진 마지막 JE 명령어 옆 주소를 보면

성공 메시지가 출력되는 부분으로 이동하는 것으로 보아 저게 serial 키 포인트인 것 같다.

 

혹시몰라 L2C-5781을 입력해보았는데

아니라고 한다..

 

근데 아까 상태에서 f8로 계속 실행하다보니

String1에 변화가 생겼다.

L2C-57816784-ABEX를 다시 확인해보자

그랬더니

성공창이 나왔다.

 

근데 auth key는 C드라이브 이름이 CodeEngn인 경우의 serial을 구하라고 했는데 ,,

아마 C드라이브 부분이 GetVolumeInformationA 함수에서 이뤄지는 것 같아서 다시 들어가보았다.

그래도 알 수 없어서 찾아보니

 

GetVolumeInformationA() 호출 이후 C드라이브 이름을 입력한다고 해서 

C드라이브 이름이 입력되는 주소로 이동해서

CodeEngn으로 패치해주었다.

그랬는데 저 부분을 두 번 반복해서 문자열이 변경되었다.

add 연산으로 문자열을 변화시키는 것 같다.

 

그래서 마지막 serial 비교 부분에서는

이런 serial이 완성되었다.

이것도 한번 확인해보자

 

L2C-5781EqfgEngn4562-ABEX를 넣어보면

이렇게 비교하고 같은 걸 확인할 수 있다.

 

성공!

 

문제에서 CodeEngn이 어떤걸로 변화하는 건지 물어봤으므로 

EqfgEngn을 넣어보았다.

 

성공!

728x90

'Reversing > Wargame' 카테고리의 다른 글

[dreamhack] rev-basic-1  (0) 2021.09.10
[dreamhack] rev-basic-0  (0) 2021.09.09
[CodeEngn] Basic RCE L15  (0) 2021.02.24
[CodeEngn] Basic RCE L09  (0) 2021.02.23
[CodeEngn] Basic RCE L04  (0) 2021.02.22

댓글