Reversing.Kr
Copyright © 2012-2020 Gogil All Right Reserved.
reversing.kr
Reversing.kr 문제입니다.
직접 풀어보시고 확인하길 바랄게요!
후우 리버싱 공부는 문제로 시작해야지!
라는 마인드로 일단 이 문제는 해설을 보면서 감을 잡겠습니다 ㅎㅎ

프로그램을 먼저 실행시켜봅시다!

비밀번호를 치는 칸이 나오고 여기에 아무거나 치고 확인을 누르면?

Incorrect Password가 뜨네요.
이제 IDA로 이 파일을 분석해봅시다.

이중에 과연 우리가 필요로하는 부분이 어디에 있을까요...
Incorrect Password라는 문장을 통해 검색을 해봐야겠습니다!
IDA에서는 Alt+T가 검색입니다.

이렇게 검색을 해주면?

여기에 이렇게 있다는 것을 알 수 있고, 이 코드는 sub_401080에 연관되어있다는 것도 알 수 있네요!
저 함수 파일에 들어가서 F5를 눌러주게 되면?

이렇게 뭔가 있어보이는 코드가 나옵니다.

조건을 만족하면 위의 MessageBoxA를, 만족하지 못하면 아래의 MessageBoxA를 실행하게 되는데,
저 aIncorrectPassw를 더블클릭 해보았더니 Incorrect Password 문장이 있는 곳으로 이동했습니다.
따라서 우리는 if문 밖의 함수를 실행하는것이 목표라는 것을 알 수 있습니다.
보니까 여러가지 조건이 있네요 ㅇㅁㅇ...
디버깅으로 확인하는게 더 편할거같은데..!
제 아이다는 디버깅이 안되므로... 올리디버거로 디버깅 해보겠습니다 ㅎㅎ
대충 처음부터 브레이크포인트 잡아서 실행을 하면?

시작해보겠슴다...

현재 위치한 회색 부분에서 프로그램이 실행되어서

이게 실행됩니다.
일단 대충 aaaaaaaaa를 집어넣고 해볼게요

보니까 저기 빨간부분부터 CMP가 조금씩 보이길래 브레이크포인트를 또 잡아줬습니다.
아마 저기부터 if문이겠거니 하면서 진행해보져.

CMP 부분까지 왔습니다. ESP+5에서부터 한바이트가 0x61인지 비교하고있습니다.
ESP+5는?

여길 보니까 입력한 0x61이 9개가 보이는걸 보니 ESP+4부터가 입력값의 시작인 것 같습니다.
ESP+5라는건 두번째 자리가 a라는거네요.
일단 우연히 맞았으니까 계속 해봅시다.

이부분을 CMP가 안보이길래 그냥 지나쳤더니 Incorrect로 이어지네요..ㅎㅎ
보니까 TEST가 있었군요...

Push가 두번 되었길래 스택을 보니

이렇게 아스키값이 저렇게 나왔습니다.
아마도 저 aaaaaaa값은 두번째 값이 a인 이후의 a들인것 같습니다. 즉 세번째 문자부터 표현된 것이죠.
이게 맞는지 궁금하신 분들은 aaaaaaaaa를 넣는게 아닌 abcdefgh를 넣어보시면 되겠습니다!
아무튼 저 두개가 push가 되어서...
Call Easy_Cra.00401150이라는 함수로 이동해보면

이렇게 비교하는 부분이 있습니다.
당연히 저 EDI와 ESI는 저 아스키문장 두개를 의미하고요.

맞다면 Zero Flag가 1이 되는 것 같습니다.
Zero Flag값을 미리 1로 바꾸고 저 부분을 실행해줬더니...

0으로 바뀐 것을 알 수 있습니다..
제가 왜 Zero Flag를 잘 챙기냐 하면...
JNZ가 위의 사진에서 있었는데 이는 Zero Flag에 따라 JMP할지의 여부를 결정하기 때문입니다.
따라서 _a5y________까지는 알 수 있게 되었습니다.
이제 다시 해서 지금까지 나온 값을 집어넣고 계속 진행해보겠습니다.

다시 뭔갈 또 비교하는것 같습니다.
보니까

이 두 문장을 비교하는거같은데
대충 봐서 그냥 5y뒤에 들어갈 것 같습니다...ㅎ
네 진심으로요.
한번 다시 다른 값을 집어넣고 다시 시작해볼게요.
aa5ybcdefghij를 집어넣어보겠습니다.

네 맞습니다.
뒤에 들어갈 9자리가 저거였군요.
계속 진행해봅시다.

aa5yR3versing을 입력해서 넘어왔더니 마지막 CMP가 기다리고 있었습니다. ESP+4의 값이 0x45여야한다는데요. 0x45의 값은 E이기 때문에 최종적인 답은 Ea5yR3versing인 것 같습니다!

넵 제대로 넘어왔습니다!
이제 문제를 풀었으니 저 값을 Reversing.kr의 Auth란에 넣어주면 점수를 얻을 수 있게 됩니다!
끄읕!
'Hacking-기초 > Reversing' 카테고리의 다른 글
x64 기초 (0) | 2020.05.18 |
---|---|
리버스 엔지니어링이란 (0) | 2020.05.18 |