목록코드엔진 (14)
줴림이 공부하줴림
이번 문제는 'Name이 CodeEngn일 때 Serial을 구하시오"라고 되어 있다. 근데 정답이 여러 개가 나올 수 있으며, 5개의 숫자로 되어 있는 정답을 찾아야 한다고 한다. 심지어 Bruteforce가 필요하다고... 미치겠군!+) Bruteforce가 무엇인지 기억이 안난다면, 내가 작성한 정처기 실기 내용을 보고 오자. [정보처리기사 실기] Ⅸ. 소프트웨어 개발 보안 구축 (1)기타 네트워크 공격ARP 스푸핑: 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를juerrim.tistory.com 이번 실행파일은 되게 게임처럼 생겼다. 처음 실행할 때 악성..
이번 문제는 전이랑 다르게 그냥 '정답을 구하세요'라고 되어 있었다. 13.exe 파일을 열어보니까 진짜로 그냥 password 입력하는 부분만 존재한다?Olly로 열어서 뜯어보기 전에 혹시 패킹이 되어있나 확인하기 위해 PEiD에 올려봤다. 결과는 패킹 처리 안된 아이. 그냥 올려서 확인해도 되겠다! ...싶었는데 막상 Ollydbg에서 열려고 하니까 파일을 시작할 수 없다고 나온다. 이게 무슨 소리고??? 찾아보니까 C#으로 작성된 경우에는 Olly로 열 수가 없다고 한다. 에바잖아 그래서 Olly는 과감히 버리고 HxD로 뜯어보기로 했다. 여기에 패스워드를 입력하라는 말과, 실패했을 때 + 성공했을 때 출력되는 메시지들이 보인다. 근데 여기서 끝났다. 뭘 더 알아볼 수가 없어... 그래서 문제 해결..
이번 문제는 지문이 좀 길다. 'Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다. 이때 성공메시지 대신 Key 값이 MessageBox에 출력되도록 하려면 파일을 HexEdit으로 오픈한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제: Key값과 + 주소 영역을 찾으시오.' 라고 되어 있다. 일단 12.exe를 열어서 아무 키나 입력하고 Check를 눌렀다. 틀린 Key인데도 아무 것도 안 뜨는 걸로 봐선 파일 안에 성공 메시지만 있고 오류 메시지는 없는 듯. 일단 12.exe를 PEiD에 올려서 패킹이 된 아이인지 아닌지 알아봤다. 이번엔 패킹 처리는 안 되어 있다. 따로 언패킹할 필요 없이 바로 Olly로 열어서 확인할 수 있다.0040107D에서 ..
어느 새 10번을 지나 11번 문제를 풀고 있는 나. 이번 문제는 OEP랑 StolenByte를 찾는 문제이다. Stolen Byte는 저번 문제를 풀 때도 나왔었는데, 패커의 일부분처럼 동작하기 위해 패커 코드 내에 사용된 코드를 의미한다는 걸 다시 한 번 알고 가자. 그리고 POPAD와 JMP OEP 사이에서 PUSH 명령어를 통해 원래 OEP부터 실행되었어야 할 코드를 스택으로 빼돌리는 것도! 11.exe를 실행시키면 이런 창이 나오는데, 그대로 확인을 누르면 keyfile을 찾을 수 없다고 error가 뜬다. 얘도 패킹이 되어 있는지 HxD랑 PEiD를 통해 알아보도록 하자. HxD 쓰는 이유? 있어보이려고...보니까 UPX로 패킹이 되어 있긴 하다. 바로 패킹을 풀어주고 Olly로 열어보자!지금..
Basic L10 문제는 "OEP를 구한 후 '등록성공'으로 가는 분기점의 OPCODE를 구하는" 문제이다. 정답인증을 할 때는 OEP + OPCODE 형식으로 하라고 명시되어 있다.바로 10.exe를 열어준다.이름이랑 Serial 번호를 입력하는 창이 뜬다. 이래서 등록성공이 어쩌고 저쩌고인 문제인걸까. HxD로 패킹이 되어 있는지 확인해보자.이전 문제들처럼 UPX로 패킹되어 있는 것 같지는 않은데, 근데 또 Olly를 보면 뭔가 명확하게 작성되어 있지 않아서 분명 패킹된 것 같은데... 다시 또 인터넷의 도움을 받아 패킹 감지 툴(?)을 찾으러 다녔다. 다른 사람들 보니까 다들 PEiD를 많이 쓰는 것 같아서 나도 설치해줬다. 점점 컴퓨터에 뭔가가 많이 생기기 시작.10.exe를 PEiD에 올려줬더니..
이번 문제는 StolenByte를 구하는 것이다. 09.exe를 열면 처음에 막히는 듯 싶다가 다음 창이 뜬다. 그냥 확인을 누르면 Error가 뜨는데, 뭔가를 해줘야 하는 듯 하다.Stolen Byte가 뭔가 했더니, 원래의 바이너리에서는 사라졌지만 패커의 일부분처럼 동작하기 위해 패커 코드 내에 사용된 코드를 의미한다고 한다. OEP를 찾은 뒤에 바이너리를 덤프하면 stolen byte는 덤프된 바이너리 내에 존재하지 않거나 이상한 자리에 존재한다고 한다. 또 POPAD와 JMP OEP사이에 PUSH 명령어 등을 통해서 원래 OEP부터 실행되어야 할 코드를 스택으로 빼돌리는 것을 Stolen byte라고 부른다고도 하는데... 어쨌든 그럼 이제 HxD로 09.exe가 패킹되었는지 확인해봐야겠다.보니까..
이번 문제는 OEP를 구하라는 문제이다. 참고로 OEP는 프로그램의 시작 위치를 의미한다. 예시로 '00400000'이라고 적혀 있는데, 이것만 보면 솔직히 뭔지 모르니까 08.exe를 실행시켜 보자.실행시키면 무슨 계산기 같은 창이 뜬다. 해보니까 진짜 계산기다. ?? 어쩌라는 거지? HxD로 열어서 확인해 보니 UPX로 패킹되어 있는 것처럼 보인다. 바로 언패킹 해준다. 언패킹 된 파일을 Ollydbg로 열고 F8로 한 줄씩 실행시켜주니, 주소 01012475에서 08.exe가 실행되는 걸 볼 수 있다. 그러므로 OEP는 01012475!! 코드엔진 홈페이지에 제출해서 정답인지 아닌지 확인했다. 점수를 얻은 걸 보니 정답인듯.
이번 문제는 "컴퓨터 C 드라이브의 이름이 CodeEngn일 경우, 시리얼이 생성될 때 CodeEngn은 '어떤 것'으로 변경되는지'에 대한 문제이다. 07.exe를 실행하면 이런 화면이 나온다. 시리얼을 입력하는 창에 아무 숫자나 입력하면 알맞지 않은 숫자라고 Error가 뜬다. Ollydbg로 파일을 열었더니 바로 Error 문자열과 성공 문자열을 확인할 수 있었다.중단점을 걸어준 부분에서 시리얼을 비교하고 일치하는지 아닌지를 판단하는 듯. 중단점 걸고 프로그램을 실행시켜 줬다. 다시 마주한 crackme 창에 아무거나 입력. 그러면 코드에 무언가 변화가 생긴다.잘 보면, 비어있던 string 부분에 내가 입력한 아무 문자열인 "Enter your serial123"이 들어 있는 걸 볼 수 있다. 저..