코드엔진 level12

보안/리버싱 2017. 9. 6. 22:50



코드엔진 level12

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




12번째 문제를 보게 된다면 key 값을 구한 뒤에 입력하게 된다면 성공 메시지를 볼 수 있다고 했다. 그래서


key 값을 먼저 찾아야할 것 같다.





처음에 시작된 12번째 문제의 프로그램이다. 이것을 올리 디버거를 통해서 디버거를 시작한다.






처음 시작을 하게 되면 이 코드로 시작을 하게 된다.






문제에서 key 값을 찾으면 어떤 문구가 출력이 된다고 명시를 했다. 그래서 그 문구가 무엇인지 찾으러 가보자.







마지막 하단에 보면 Congra~라고 시작되는 부분이 있다. 아마 이 부분이 key 값을 정상적으로 입력을 했을 경우에 뜨는


문자인 것 같다. 이 문자를 따라서 들어가면 아마 저 문구를 띄우기 위해서 조건문이 있을 것이니깐 저 문구를 클릭해서


따라가보자.






어셈블리어에서 cmp 값1, 값2는 값1과 값2의 서로의 값이 같으면 0이 나오면 jnz가 인식을 해서 다음 조건문으로


넘어가게 된다. CMP EAX, 7A2896BF이 EAX-&A2896BF가 0이 나와야 한다는 게 된다.





어셈블리어에서는 16진수를 많이 사용하니깐 16진수의 10진수의 수로 바꾸면 어떻게 될까?라고 공학용 계산기를


이용해서 위의 16진수의 수를 10진수로 바꿔보자. 그러면 2049480383의 10진수 값이 나온다.


이것을 프로그램에 직접 입력을 해보자.







그러면 축하 문자가 나온다!! 그러면 여기까지가 key값을 찾는 과정이고, 그 다음엔 이 문구를 출력하는 위치값을


알아내라고 했으니깐 HEXEDIT 프로그램을 이용해서 프로그램을 열어보자.







들어가 있는 축하메시지 문구는 지우고, 십진수의 값을 16진수로 일일이 입력을 하자. 그러면 들어간 부분의


값이 있다. 0D4B에서 0D45까지인 것을 볼 수 있다.


그러면 구한 key값과 HexEdit을 이용한 값을 더해서 넣으면 다음 화면으로 넘어갈 것이다.






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

코드엔진 level14  (0) 2017.09.07
코드엔진 level13  (0) 2017.09.07
코드엔진 level11  (0) 2017.09.06
코드엔진 level9  (0) 2017.09.05
코드엔진 level8  (0) 2017.09.04

설정

트랙백

댓글