본문 바로가기

리버스엔지니어링/크랙미 풀이

Junior CTF Level2

오랜만에 해커스쿨을 좀 돌아보고 있었는데 멍멍님이 올리신 Junior CTF가 있더라고요.

그래서 한번 풀어봤습니다.

현재 예선전이 끝났으므로 풀이를 올려도 상관없을거라 생각해서 올립니다.

문제가 있을시 덧글로 알려주시면 감사하겠습니다.




이렇게 문제가 주어지는데요.

파일을 다운로드 해서 실행해보겟습니다.



이런식으로 패스워드를 입력하라고 한다음 맞음,틀림을 구분한다음 그 결과에 해당하는 메시지박스를 출력합니다.


일단 가장 간단한 리버싱기법인 Back To User 기법을 사용해보겟습니다.




그러니 이렇게 메시지박스를 만드는 부분이 있고,

그 위로 password를 검사하는 부분이 있습니다.



이런 식으로 password가 있는데 이 어셈블리어를 자세히 읽어보면 A(레지스터값)을 99와 xor한뒤 그 값이 0xF1,0xFC,등 등인지를 검사하는 부분입니다.


그래서 원래는 계산기로 xor값을 계산해보려고 했으나 20개라는 것이 너무 귀찮아서 프로그램으로 만들어서 돌려보았습니다.



소스는 이런식으로 for구문을 돌려가면서 각각의 암호문을 xor값을 이용해서 복호화시킨다음 복호문을 출력해보도록 해봤습니다.



그러자 이런 값이 나왔습니다. 아마도 답은 hello junior hackers라고 추측되네요.

(나머지 뒤의 값은 초기화가 안된 값입니다.)



답을 집어넣자 이렇게 정답이라고 표시가 되네요.


이것으로 Junior CTF 2레벨 풀이를 마치겠습니다.