kj0on

[RCE] Basic L07 본문

Reversing/CodeEngn

[RCE] Basic L07

kj0on 2025. 7. 11. 16:34
목차 접기

0. 실행환경

 

0-1. 운영체제 (1)

Window 11 Home


0-2. 툴 (2)

x32dbg
Detect it easy


1. 파일

https://codeengn.com/challenge/rce_basic
07.7z
0.00MB

 

password : codeengn


2. 프로그램 동작

[이미지1] Basic L07

실행 시 Serial을 입력하는 창과 Check 버튼을 볼 수 있다.

 

[이미지2] Basic L07

Serial이 일치하지 않는 경우 에러 메시지가 출력된다.


3. Detect It Easy

[이미지3] DIE 실행 결과

32비트 실행파일, 델파이로 작성된 프로그램인 것을 알 수 있다.


4. 분석

[이미지4] 연산 코드

실행하다 보면 간단한 반복문이 나타난다. dl에 0x02를 넣고 밑에서 dec로 값을 0x01감소한다. 이후 jne로 조건부 분기가 이루어 진다. 따라서 총 2번 반복된다.

 

[이미지5] lstrcat 반환값(0x40225C) 참조 덤프

연산을 해주는 위치를 보면 앞에서 lstrcat해준 문자열이다. 빨간색 네모칸의 값에 add 연산을 해주는 코드다.

 

[이미지6] lstrcat 반환값(0x40225C) 참조 덤프

반복문을 모두 실행하고 나면 최종적으로 값에 2가 더해진다. 해당 값은 C 드라이브의 이름에 해당한다. 뒤에 보이는 "4562-ABEX"는 하드코딩된 문자열이다.

 

[이미지7] lstrcat(0x402000) 참조 덤프

다음 동작으로 "L2C-5781" 문자열을 앞에 붙인다.


5. 풀이

[이미지8] lstrcat(0x402000) 참조 덤프

"L2C-5781", "4562-ABEX"는 하드코딩된 문자열로 C드라이브 이름에 붙는다. C드라이브 이름을 CodeEngn으로 설정하면 "Code" 부분의 각 아스키 값이 +2가 되면서 "eqfgEngn"이 된다.


자세한 분석 내용은 https://kj0on.tistory.com/8 참고


 

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

[RCE] Basic L08  (0) 2025.07.11
[RCE] Basic L06  (0) 2025.06.29
[RCE] Basic L05  (0) 2025.06.29
[RCE] Basic L04  (0) 2025.06.29
[RCE] Basic L03  (0) 2025.06.28