le0s1mba

[CodeEngn] Basic L06 본문

Security Challenges/CodeEngn

[CodeEngn] Basic L06

le0s1mba 2025. 3. 12. 09:45

https://codeengn.com/challenge/rce_basic


문제 파일을 실행시키면 그냥 serial만 입력받는 창이 뜬다.

aaaa 입력하고 Check Serial 버튼을 눌러 보면 "Wrong serial!!!"이라고 뜬다.

 

그럼 이제 x32dbg로 열어 보자.

문제 설명에 unpack을 해서 oep를 구한 후, serial 값을 구하라고 한다.

EP에 pushad가 있기 때문에 popad도 있을 것이다.

OEP(Original Entry Point)는 popad 바로 밑의 jmp문에 위치해 있다.

때문에 popad만 찾으면 OEP도 바로 찾을 수 있다.

 

0x429A3A에 popad가 있고, 0x429A48에 jmp문이 있다.

여기서 OEP는 0x401360이란 것을 알 수 있다.

그럼 이제 serial을 구해야 하기 때문에 저 jmp문에서 F8로 실제 실행 코드로 가보자.

 

0x401360에 도착한 후, 문자열 참조에 들어가면 위의 사진처럼 "Wrong serial!!!"과 "Good job!"이 있다.

그럼 이제 안으로 들어가서 "Good job"과 "Wrong serial" 비교 구문 근처를 보면 06.401320 함수를 볼 수 있다.

해당 주소에 bp를 걸고 실행시키면 GUI 창이 뜨는데, 여기에 aaaa를 입력하고 해당 함수 안으로 들어가 보자.

 

F8을 해서 0x401069에 도착하면 내가 입력한 aaaa와 "AD46DFS547"이 있는데, Basic L05에서 했던 것처럼 저 값이 내 입력 값과 비교하는 진짜 serial 값이다.

때문에 저걸 OEP 뒤에 붙여서 Auth에 제출하면 문제가 풀린다.


더보기
flag : 00401360AD46DFS547

'Security Challenges > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic L08  (0) 2025.03.12
[CodeEngn] Basic L07  (0) 2025.03.12
[CodeEngn] Basic L05  (0) 2025.03.12
[CodeEngn] Basic L04  (0) 2025.03.12
[CodeEngn] Basic L03  (0) 2025.03.11