티스토리 뷰

CodeEngn Basic RCE의 마지막인 20번 문제입니다.






CodeEngn이라는 문자열이 출력되려면 crackme3.key 파일 안의 데이터가 무엇이 되어야 하는지를 묻는 문제입니다.


먼저 프로그램을 다운로드 받겠습니다.






'20.exe'라는 이름의 파일입니다.


실행시켜보면..






이런창이 뜨고 아무 일도 일어나지 않습니다.


먼저 PEID로 파일의 정보를 보겠습니다.






패킹은 되어있지 않네요.


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






'CRACKME3.KEY'라는 이름의 파일이 필요하고 이 파일의 크기는 18바이트여야 합니다.


계속 밑으로 내려가며 보겠습니다.








첫 번째 사진의 내용은 CRACKME3.KEY 파일 안에 있는 문자열을 한 자리씩 순서대로 A-O까지 XOR 연산을 합니다.


우리는 XOR 연산을 한 결과가 CodeEngn이 되도록 CRACKME3.KEY 파일 안에 있는 문자열을 바꾸어주어야 합니다.


함수가 종료되려면 AL 과 BL의 값이 같아야 하는데 BL은 함수가 한번 한번 돌 때마다 A부터 1씩 증가하므로,


필요한 문자열인 CodeEngn이 만들어지고 나면 BL의 값이 49(' I ')가 됩니다.


그러므로 CRACKME3.KEY 파일의 9번째 문자는 I이 되어야 합니다.


그리고 두번째 사진은 CRACKME3.KEY 파일의 마지막에 XOR DWORD PTR DS:[0x4020F9], 0x12345678과 비교하기 위한 문자 4개가 필요하다는 것입니다.


이제 CRACKME3.KEY 파일 안에 있는 값들을 알아내기 위해서 위 연산들을 이용해서 C언어로 코드를 짜보았습니다.






위 연산을 통해서 1~9번째와 마지막 4개의 문자를 구했고, 저는 10~14번째의 문자들은 16진수 00으로 처리했습니다.


이렇게 얻은 값을 CRACKME3.KEY 파일에 넣고 20.exe를 실행시켜보면..






CodeEngn이 정상적으로 출력됩니다!


코드엔진 사이트에 정답을 인증하면...






드디어 CodeEngn Basic RCE의 문제 풀이를 다 썼는데요.


20번 풀이를 쓰던 중에 문득 궁금증이 하나 생겼습니다.






CodeEngn에는 Continue라고 마지막으로 풀이한 정답을 입력하면 다음 문제로 이동되는 기능이 있는데요.


이곳에 더이상 Basic RCE에 다음 문제가 없는 20번 문제의 정답을 입력하면?


한번 입력해보겠습니다. (두근두근)






!!!


(솔직히 바로 Advance RCE로 넘어갈 줄 알았습니다...ㅋㅋ)





댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함