이번 문제는 다음과 같습니다.
먼저 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값을 입력하면 성공메세지가 뜰것으라는것을 알수 있습니다.
'워게임 > 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 |