상세 컨텐츠

본문 제목

[Write-up] CodeEngn Advance RCE 14

Reversing Write-Up/03.CodeEngn Advance

by RACC8N 2020. 2. 11. 17:02

본문

문제 : 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자리만 맞춰주면 되므로 뒤에는 마음대로 써도 된다.

 

 

 

관련글 더보기

댓글 영역