티스토리 뷰

CodeEngn Basic RCE의 12번 문제입니다.






Key 값과 Key 값이 메세지 박스에 출력도록 수정해야 하는 주소영역을 구하는 문제입니다.


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






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


쓰레기통 모양의 아이콘이네요.


프로그램을 실행시켜보면..






잘못된 Key 값을 입력하고 Check 창을 눌러봤더니 변화가 없습니다.


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






패킹은 되어있지 않네요.


바로 올리디버거로 분석해보겠습니다.






문자열 중에 성공 문자열로 보이는 문자열이 보입니다.


클릭해서 저 문자열이 사용되는 위치로 가보겠습니다.






성공 문자열 위에 GetDlgItemInt 함수가 있는 것으로 보아 사용자가 입력한 숫자와 Key 값을 비교하는 형식으로 보입니다.


GetDlgItemInt 함수에 BP를 걸고 실행시켜보겠습니다.






확인하기 쉽게 1을 입력하겠습니다.







그랬더니 EAX에 1이 저장되었습니다.


사용자가 입력한 숫자는 EAX에 저장됩니다.






그 밑에는 ESI에 이상한 문자열을 넣고 4를 더하고 그 값을 다시 EBX에 넣는 것을 반복하는 식입니다.


하지만 이 부분은 성공문자열로는 절대 갈 수 없습니다.


그러니까 일종의 낚시라는 거죠.


하지만 그 바로 밑을 보면..






EAX와 7A2896BF를 비교하고 맞다면 성공 문자열로 점프하는 것을 볼 수 있습니다.


그러니 Key 값은 7A2896BF이네요.


Key 값을 프로그램에 입력해보면..


성공 문자열이 안 뜹니다.


하지만 7A2896BF를 10진수로 바꾼 2049480383을 입력해주면..






성공 문자열이 출력됩니다.


이제 성공 메시지에 성공 문자열 대신 Key 값이 출력되도록 프로그램을 수정해보겠습니다.


HxD로 '12.exe'를 열어주겠습니다.






성공 문자열을 검색합니다.






성공 문자열이 보이네요.


성공 문자열을 Key 값으로 바꿔주겠습니다.





이제 성공 문자열 대신에 Key 값이 출력됩니다.


코드엔진 사이트에 문제 형식에 맞게 Key 값 + 주소영역을 입력해주면...








'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE - Level 14 풀이  (103) 2017.11.16
[CodeEngn] Basic RCE - Level 13 풀이  (102) 2017.11.15
[CodeEngn] Basic RCE - Level 11 풀이  (109) 2017.11.08
[CodeEngn] Basic RCE - Level 10 풀이  (107) 2017.11.07
[CodeEngn] Basic RCE - Level 09 풀이  (111) 2017.11.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함