우선 열어보자~!
저 함수를 분석해보면된다~
실행하고 6자리를 입력해봤다
대부분 ECX 레지스터 문자열 길이와 관련이 있다
그만큼 반복하기 때문에
근데 6자리를 입력했는데 9가 나온다
그리고 cl에 F0을 더해서
FF와 비교한다
그럼 계산을 해봤을 때
문자열의 길이가 12자리라는것을 알 수 있다
6자리를 입력했는데 9가 나온걸 보면
3+되었다
그럼 F가 15이니깐 12자리를 입력해야한다
12자리를 입력하면 je ch17.11614AD를 만족해서 점프를 뛴다
그리고 조금 내리면 이렇게 4자리씩 찾을 수 있다
내가 입력한 앞에 4자리와 EDX를 XOR해서 비교한다
그럼 반대로 3628552E와 5A643059를 XOR하면 된다
0x6c4c6577 이렇게 나오는데
이렇게 나온다
그럼 리틀엔디안으로 weLl이렇게 4글자를 찾았다
다음으로
중간 4글자를 구할 차례다
int 1이 있는데 single step break다 원래 이걸 사용해서 안티디버깅을 할 수 있는데
왜 저렇게 해놓은건지는 모르겠지만 아무튼 그냥 잘 실행되었다
근데 좋은 방법이 있는데 lodsd eax부분에서 eax값을 0으로 만드는것이다
그럼 eax에 값이 생기는 것을 볼 수 있는데
이렇게 중간 4글자도 찾았다
지금까지 weLl_d@n이다
마지막으로 4글자는
좀 그렇지만 게싱을 했다
생각대로 잘 값이 계산이 되지 않았다
well don을 보고
well_done인걸 알수있는데
12자리다
그럼 뒤에 아마 특수문자
~!@ 이런 것 중에
3개가 들어가지 않을까 생각해서 다 넘어봤는데
좀 노가다해서 !!!라는걸 알았다 하..
그리고 e도 그냥 e가 아니라 대문자였다
또한 XOR 연산을 했는데 뜻대로 나오지 않아 많이 노가다를 했다
그래서 답은 weLl_d@nE!!!
조금 힘들었지만 풀었다
'WARGAME > Root-Me' 카테고리의 다른 글
ELF - ExploitMe (0) | 2016.11.28 |
---|---|
ELF - CrackPass (0) | 2016.11.27 |
ELF - No software breakpoints (0) | 2016.11.24 |
PYC - ByteCode (0) | 2016.11.24 |
ELF - ARM basic (0) | 2016.11.24 |