문제 : Serial : NH6-0-0091008D0052 일때 Name은 무엇인가
풀이 :
단순한 Serial 을 찾는 문제이다.
디버거를 켜보자.
등록 성공과 실패 문구를 찾았다. 위로 조금 더 올려 프롤로그 부분에 BP를 걸었다.
ID와 PASSWD를 입력하고 프로그램을 실행시키면, 다음과 같은 조건분기문을 찾을 수 있다.
PASSWD를 비교하게 된다. 여기서 조건을 맞출 수 있는 값은 많지만 문제에서 주어진 NH6-0- 값을 그대로 사용하겠다.
밑으로 내려오게되면 PASSWD값을 만드는 함수를 찾을 수 있다.
여기서 NAME을 AAAABBBB로 주었는데, 함수에서 NAME의 길이가 0xC보다 작으면 두 배를 하여 앞에서부터 0xC까지 잘라버린다.
이제 0xC자리인 Name "AAAABBBBAAAA"과 문자열 "NH KeyGenMe6"를 가지고 PASSWD를 만든다.
여기서 필요한건 Name의 앞에 3자리 "AAA"와 문자열 앞에 3자리 "NH "이다.
자리 문자끼리 더한다. "A" + "N" = 8F ...
따라서 NH6-0-00%x00%x00%x (A+N,A+H, A+ ) 이 된다.
문제에서 주어진 PASSWD를 가지고 역 연산을 해보면 답을 구할 수 있다.
앞에 3자리만 맞춰주면 되므로 뒤에는 마음대로 써도 된다.
[Write-up] CodeEngn Advance RCE 15 (0) | 2020.02.11 |
---|---|
[Write-up] CodeEngn Advance RCE 12 (0) | 2020.02.10 |
[Write-up] CodeEngn Advance RCE 11 (0) | 2020.02.07 |
[Write-up] CodeEngn Advance RCE 10 (0) | 2020.02.06 |
[Write-up] CodeEngn Advance RCE 9 (0) | 2020.02.04 |
댓글 영역