문제 : Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가
힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고..
풀이 :
프로그램을 실행시킨 모습이다.
Name에 한글자를 입력했을 경우 더 많은 입력을 해달라고 한다.
디버거를 켜보자.
문자열 검색을 통해 해당 위치로 가봤더니, cmp eax, 0x3 명령어를 볼 수 있었다.
이부분을 바꿔 Name에 1개가 들어가도록 만들자.
그리고 밑으로 내려가보면 Key를 만드는 함수를 찾을 수 있다.
이 함수를 분석해보자. Name에 A를 입력하겠다.
다음과 같은 연산을 수행한다.
첫번째 로직 연산 결과이다. FFE37AF0
이와같이 밑에 4개 총 5가지의 로직을 통해 Key값을 만들게 된다.
키값이 완성되면 FFE3-2C73-0502A34C-8A48-E1CB와 같은 모습이 나타나는데
이는 각 로직에서 앞에 4자리, 8자리만 뽑아서 만든 것이다.
첫번째로직 결과를보면 FFE37AF0인데, Key값의 맨처음 4자리를 보면 FFE3으로 같은것을 알 수 있다.
따라서 Key값 BEDA-2F56-BC4F4368-8A71-870B인 Name 1자리를 맞추기 위해선 첫번째 로직 결과가 BEDA로 시작하는 문자를 찾으면 된다.
간단한 프로그램을 만들어 보았다.
ASCII 코드로 알파벳 F인 70이 시작이 beda임을 알 수 있다.
[Write-up] CodeEngn Basic RCE 19 (0) | 2020.01.22 |
---|---|
[Write-up] CodeEngn Basic RCE 18 (0) | 2020.01.20 |
[Write-up] CodeEngn Basic RCE 16 (0) | 2020.01.20 |
[Write-up] CodeEngn Basic RCE 15 (0) | 2020.01.20 |
[Write-up] CodeEngn Basic RCE 14 (0) | 2020.01.20 |
댓글 영역