실행을 시켜보니 username과 authCode를 입력받는다



디컴파일을 해보니 sub_4014A0함수에서 username과 authCode를 검사하는듯 하다.




주석으로 처리해 놓았는데 첫번째 do-while문에서는 username이 RingZer0인지 검증을 한다.


두번째 do-while문에서는 authCode의 길이가 15자 인지를 검증한다.


마지막 while문에서는 authCode의 값들이 '0'~'9'중에 있는지를 검증한 후 


sub_401334와 sub401450함수를 차례로 호출한 후 최종적으로 v10[4]==v19[17]가 참이어야지 인증에 성공하는 프로그램이다.


sub_401334함수는 a1(username)이 정해져 있기 때문에 분석할 필요가 없고 sub_401450함수만 분석하면 될듯하다.



 분석해 보면 15자리의 authCode를 3자리씩 잘라서 3개의 값들을 연산을 통해 총 5회 반복하여 크기 5의 문자열을 만들어낸다.


그리고 반환된 문자열을 앞서 반환된 문자열의 v9[1],v9[5],v9[8],v9[14],v9[17] 인덱스와 비교를 한다.


 디버깅을 통해 각각의 값은 0x98 0x97 0x78 0x0f 0x15 이다.


한번에 authCode의 3자리씩 알아낼 수 있으므로 간단한 코딩을 하면 문제가 풀린다.










'문제 > RingZeroTeam' 카테고리의 다른 글

RingZer0Team XSS Challenge 2  (0) 2016.10.20
RingZer0Team Windows API for the win!  (0) 2016.09.06

+ Recent posts