본문 바로가기

[Wargame Write-up]/HellBoundHackers

[HellBoundHackers] [Application Cracking] Application Cracking 13

Application Cracking 13번째 문제이다.


여전히 패스워드를 찾으라고 하고 있다.




Console에서 실행되며, 이러한 방식으로 동작한다.


몇 번 실행해보면, 마지막에 나타나는 숫자는 난수인 것을 알 수 있다.




참조 문자열을 찾아서 루틴으로 넘어가보자.




rand, srand, time 함수가 보인다. 난수 생성에 가담하는 함수가 쓰인다는 것을 확인하고 넘어가자.




아래로 가보면, CMP, JE문이 보이는데, 현재 10000을 입력하고 Breakpoint에서 멈춘 상태이다.


다른 하나가 위에서 생성된 난수이며, 그것과 같아야 올바른 루틴으로 넘어가게 된다.




스택 부분에 각 변수들이 이렇게 올라가 있는데, 




10000(0x2710)을 생성된 난수인 7888(0x1ED0)으로 패치해주자.




여러 비교문을 통과하면, 이 성공 메시지 출력 루틴으로 넘어간다.




인증키로 음수가 나오는데, 실제 이걸로 인증이 안된다. 401525에서 EAX에 들어가는 Hex 값이 signed int로 출력되어 있는데, unsigned int 값으로 변환한 값을 인증키로 사용해보자.




Python에선 기본적으로 hex 값을 입력하면 unsigned int 타입으로 변환해준다.


이 값으로 인증하면 되겠다.