코드엔진 level16

보안/리버싱 2017. 9. 8. 21:51



코드엔진 level16

: http://codeengn.com/challenges/basic/16




레벨 16번 문제도 두둥!! 똑같은 Serial을 구하는 문제!! 아마 이것도 레벨 15번 문제랑 똑같은 문제일 것 같은


느낌이 팍팍온다. 그래서 프로그램을 실행시켜보자.






아.. 역시나 똑같은 문제이다. 다만 프로그램 형태가 약간 다르다는 점이 있지만 안에 속 내용물은 똑같을 것


같다. 왜냐면 어차피 나는 올리 디버거로 어셈블리 코드를 볼테니깐 말이다..ㅋ






PEID로 프로그램이 패킹되어있는 여부를 확인해도 딱히 패킹이 된 흔적이 없다. 그래서 결론은 이 프로그램도 패킹이


안 되어있는 프로그램이다. 그래서 바로 올리 디버거로 바로 깔 수 있는 아주 착한 프로그램이다!!






올리 디버거로 열면 당연히 패킹이 안 되어있는 프로그램이라서 PUSHAD와 POPAD의 존재가 보이지 않는다!







이번에도 스트링 검색하는 부분을 들어가서 성공하는 문구를 찾는다. 찾으면 금방 쉽게 찾을 수 있다.



성공하는 문자 위에는 분명히 조건문이 있다는 점을 잊지말자. 그래서 위쪽에 어셈블리 코드를 확인하면


CMP 비교문이 있다. 비교문을 보면 비교값이 있고, 저기에 BP를 걸어서 EAX에 어떤 게 들어가는 지 확인한다.


그러면 저기에도 사람이 입력한 값이 들어갈 것이고, 뒤에 있는 값이 비교값일 것이다. 비교값은 Serial번호다.





그런데 비교문의 값 중에서 EBP-3C가 있다. 값이 EBP주소값에서 -3C를 한 곳에 값이 있다는 뜻이다.




그래서 EBP-4C한 값의 주소값인 70FEFC인 것을 확인을 했고, 왼쪽 아래창에서 Ctrl + G를 눌러서 구한 값주소를 찾아간다.


그러면 97 0D C6 E4가 나오는데, 이것도 반대로 생각해야하니깐 E4 C6 0D 97이 Serial가 된다.







끝!


'보안 > 리버싱' 카테고리의 다른 글

코드엔진 level19  (0) 2017.09.12
코드엔진 level18  (0) 2017.09.11
코드엔진 level15  (0) 2017.09.08
코드엔진 level14  (0) 2017.09.07
코드엔진 level13  (0) 2017.09.07

설정

트랙백

댓글