티스토리 뷰






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


남은 군 생활이 며칠인지 구하는 문제네요..






프로그램을 실행시키고 확인 버튼이나 닫기 버튼을 누르면 숫자가 1씩 계속 올라갑니다.


닫기 버튼을 눌러도 종료되지 않아서 작업 관리자에서 강제로 종료시켜야 했습니다.






PEID로 확인해보니 UPX 패킹이 되어 있네요.


언패킹을 해준 뒤 올리디버거로 분석하겠습니다.






안티 디버깅 함수인 IsDebuggerPresent를 만나서 간단하게 우회해주었습니다.






IsDebuggerPresent 함수를 우회한 뒤 함수 목록을 보니 아까 안 보였던 MessageBoxW 함수를 찾을 수 있었습니다.


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






실행시켜보니 45E071에서 브레이크가 걸렸습니다.






스택 창을 확인해보니 이 부분이 남은 군 생활 일수를 출력해주는 메세지 박스라는 것을 알 수 있습니다.






계속 실행시키다 보니 EBP에 남은 군생활 일수가 계속 올라가며 저장되고 있는 것을 확인할 수 있었습니다.






메세지 박스 함수 부분을 NOP으로 수정해주었습니다.


이렇게 바꾸고 실행시키면 메세지 박스를 출력하지 않고 남은 군생활 일자만 올라가서 빠르게 정답을 확인할 수 있을 것입니다.






계속 실행시키다 보니 790까지만 커지고 프로그램이 종료되었습니다.


그렇다면 남은 군 생활 일수는 790일이겠네요!..ㅠㅠ


790을 md5로 암호화한 뒤 코드엔진 사이트에 인증해보면..






!!





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