티스토리 뷰

CodeEngn Basic RCE의 7번 문제입니다.






컴퓨터 C 드라이브 이름이 CodeEngn 일 때 시리얼이 생성되는데 CodeEngn은 어떤 것으로 변경되는지를 구하는 문제입니다.


파일을 다운로드 받아보겠습니다.






'07.exe'라는 이름의 파일입니다.


일단 실행시켜보겠습니다.







너의 시리얼이 옳지 않다고 하네요.


문제에서 C 드라이브의 이름이 CodeEngn 일 때 시리얼이 생성된다고 했으니까


C 드라이브 이름을 바꾸어주겠습니다.






C 드라이브 이름을 CodeEngn으로 바꾸었습니다.






PEID로 열어보니 어셈블리어로 짠 프로그램이군요.


올리디버거로 열어보겠습니다.






어셈블리어로 만들어서 그런지 코드가 눈에 더 잘 들어오네요.


문자열을 살펴보겠습니다.






실패 문자열과 성공 문자열이 보입니다.


성공 문자열을 띄우는 곳으로 이동하겠습니다.






비교 함수 CMP가 보입니다.


저곳에서 문자열을 비교하고 옳으면 성공 문자열을, 틀리면 실패 문자열을 띄우는 것 같습니다.


일단 CMP에 BP를 걸고 실행시켜보겠습니다.






프로그램을 실행시켰더니 안 보이던 문자열이 생겼습니다.


이제 코드 분석을 해보겠습니다.






'GetVolumeInformationA'이라고 하는 처음 보는 함수가 보입니다.


찾아보니 하드 드라이브의 정보를 얻어오는 함수라고 합니다.


문제의 내용으로 유추해봤을 때 저 함수가 현재 제 C 드라이브의 이름인 'CodeEngn'이란 문자열을 얻어온 것 같군요.


그 밑으로는 'StringToAdd'란것이 있는데 해석해보면 '추가할 문자열'이라고 볼 수 있습니다.


코드의 흐름으로 보아 마지막으로 추가된 문자열인 'L2C-5781EqfgEngn4562-ABEX'가 시리얼 인 것 같습니다.


프로그램에 인증을 해보겠습니다.






정답입니다.


이 프로그램은 사용자의 하드 디스크 이름을 가져와 변형시키고 거기에 문자열들을 추가해서 시리얼로 만드는 프로그램인 것 같습니다.


CMP문까지 다시 실행시키고 문자열들을 살펴보겠습니다.






저는 저 3번째 줄에 있는 'EqfgEngn4562-ABEX'라는 문자열이 수상해 보입니다.


왜냐하면, 제 하드 디스크 이름인 'CodeEngn'과 공통적으로 'Engn'이 있기 때문입니다.


클릭해서 살펴보겠습니다.






00401092를 보면 'VolumeNameBuffer'가 0040225C라고 합니다.


그러니 'VolumeNameBuffer'가 우리가 찾는 정답인 CodeEngn이 변경된 값이겠군요.


('VolumeNameBuffer'란 이름을 저장하는 버퍼)


그리고 0040109E와 004010A3을 보면 0040225C에 004023F3에 저장되어 있는 값인 '4562-ABEX'를 추가 했더니


'EqfgEngn4562-ABEX'가 됐습니다.


그러니 0040225C에 있는 문자열 즉 'VolumeNameBuffer'은 'EqfgEngn4562-ABEX'에서 '4562-ABEX'을 뺀 값이란 것을 알 수 있습니다.


코드엔진 사이트에 정답을 인증 해보면...








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

[CodeEngn] Basic RCE - Level 09 풀이  (111) 2017.11.07
[CodeEngn] Basic RCE - Level 08 풀이  (126) 2017.11.03
[CodeEngn] Basic RCE - Level 06 풀이  (108) 2017.11.01
[CodeEngn] Basic RCE - Level 05 풀이  (98) 2017.10.30
[CodeEngn] Basic RCE - Level 04 풀이  (111) 2017.10.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함