워게임/CodeEngn

[CodeEngn] Basic RCE L05

name2965 2022. 5. 8. 01:35
728x90

 

 

 

 

이번 문제는 다음과 같습니다.

 

먼저 exeinfope로 프로그램을 까보면

 

 

 

 

 

32비트 기반 실행파일에 패킹은 안되있고 델파이로 작성된 프로그램입니다.

 

먼저 프로그램을 실행해보면

 

 

 

 

다음과 같은 프로그램이 나옵니다.

 

텍스트박스가 2개있고 Register now ! 라는 버튼을 누르면 시리얼번호에 대한 검증을 거치는 구조로 파악됩니다.

 

이름은 별 상관없는 문제 같으므로 시리얼번호에대한 검증이 어떻게 이루어지는지 확인해보겠습니다.

 

 

우선 임의의 시리얼번호를 입력해보면

 

 

 

 

다음과 같은 메세지가 뜨는것을 확인할수 있습니다.

 

우선 IDA로 열어봐야합니다.

 

시리얼번호가 틀렸을때 나오는 Wrong Serial_try again! 이라는 문자열이 나오는데

그렇다는건 분기문에서 특정 조건에 부합하지 않으면 나오는 문자열이므로 이 문자열을 찾아봐야 합니다.

 

 

 

 

이 부분에 아까 메세지에 나왔던 문자열이 보이므로 이 문자열이 쓰이는 함수로 가보겠습니다.

 

 

 

 

우선 이 부분은 분석을 해본 결과, Name과 Serial 값에 대한 길이 검증 단계입니다. 그러므로 신경쓰지 않아도 되고

그다음 부분을 보면

 

 

 

 

이 분기문을 분석해보면, 입력받은 Name값을 offset _str_Registered_User.Text 라는 값과 비교한후

서로 같아야 다음 분기문으로 넘어가고, 만약 같지 않다면 잘못된 값이라는 메세지가 뜨는 구조입니다.

 

그러므로 Name값을 일치시키는것이 첫번째로 해야할 일입니다.

 

 

 

입력한 Name값과 비교하는 문자열은 하드코딩 되있으므로 이 값을 사용해야 문제가 풀릴것입니다.

 

 

그 다음을 살펴보면

 

 

 

 

이 분기문이 올바른 Name값을 입력받았을때 넘어오는 부분입니다.

 

하나하나 분석해보면 아까와 같은 메커니즘으로 되있는것을 알수있는데,

입력받은 Serial 값을 offset _str_GFX_754_IER_954.Text 에 있는 값과 비교해서

같으면 성공메세지, 다르면 실패메세지를 출력하는 메커니즘 입니다.

 

 

 

입력받은 Serial값과 비교하는 문자열은 다음과 같으므로, 알아낸 Name과 Serial값을 입력하면 성공메세지가 뜰것으라는것을 알수 있습니다.

 

 

 

 

 

728x90

'워게임 > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L07  (0) 2022.05.12
[CodeEngn] Basic RCE L06  (0) 2022.05.12
[CodeEngn] Basic RCE L04  (0) 2022.05.04
[CodeEngn] Basic RCE L03  (0) 2022.05.04
[CodeEngn] Advance RCE L07  (0) 2022.05.03