티스토리 뷰






CodeEngn Advance RCE의 03번 문제입니다.


Name이 CodeEngn 일 때의 Serial을 구하라고 하네요.






시리얼 칸에 아무 문자열이나 넣어보니 역시 실패 문자열이 출력됩니다.


올리디버거로 열어서 분석해보겠습니다.






성공 문자열로 보이는 곳으로 가보겠습니다.






SEH (Structured Exception Handling)란 Windows OS에서 제공하는 예외처리 방식입니다.


언어 중립적이어서 범용적인 사용이 가능하며, 0으로 나누기나 유효하지 않은 메모리 주소 접근 같은 하드웨어 예외를 알아서 감지하고 처리하도록 도와줍니다.


SEH가 있는 것으로 봐서 어떤 예외가 발생하면 이곳으로 분기해서 성공 문자열을 출력해주는 것으로 보이네요.






그럼 이제 실패 문자열이 출력되는 곳으로 가보겠습니다.






사용자가 시리얼칸에 입력한 값과 어떤 값을 비교하고 EAX를 나누고 있습니다.


strcmp 함수는 비교하는 문자열이 서로 같을 때 0을 반환하므로 EAX는 0이 됩니다.


0040119C에서 0으로 나누면 예외가 발생해서 SEH 때문에 성공 문자열이 있는 곳으로 분기하게 될 것입니다.


그렇다면 시리얼값으로 저 값을 넣어주면 되겠네요.






성공 문자열이 출력되는 것을 볼 수 있습니다!


코드엔진 사이트에도 인증해보면..






!





댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함