Hacking (38) 썸네일형 리스트형 CodeEngn_basic_12 Basic RCE L12 Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 역시 가장 먼저 실행이다. 실행시키면 이렇게 뜨는데 입력을 해도 아무런 반응이 없다. 맞는 Key값을 입력하면 뭔가 출력시킬 듯 하다. Ollydbg로 열어준 뒤에 text를 확인해보자 ( 보통 정답과 입력값을 비교할 때에는 text string에 성공일 때, 실패일 때 출력하는 메세지가 저장되어 있기 때문 ) 성공 텍스트로 들어가보면 이렇게 EAX와 7A2.. CodeEngn_basic_11 Basic RCE L11 OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 풀기전에 한번 씩 실행해보자 ( 물론 UPX 패킹이 되어있었기 때문에 언패킹 진행 후에 실행시켯다. ) 이상한 창이 뜨면서 Error 메세지가 출력된다. 근데 어디선가 본 듯한 형태이다. 그래서 지금까지 풀었던 걸 하나씩 실행을 해보니 9번 문제와 똑같았다. 그때 Stolenbyte 찾았으니 OEP만 추가적으로 찾으면 될 것 같다. 일단 OEP라 봤자 프로그램의 가장 처음 시작부분의 주소가 OEP이기 때문에 바로 찾을 수 있다. Ollydbg로 열어보.. UPX 언패킹 하는법 reversing 문제를 풀다보면 이것처럼 UPX 패킹이 되어있는 문제들이 있을텐데 이걸 푸는 방법은 아주 간단하다. 이 툴을 다운로드 받은 후에 언패킹을 진행할 파일을 해당 폴더 안에 넣은 뒤에 cmd창 ( win + R 후에 cmd입력 )으로 들어간 뒤에 해당 upx303w 폴더로 cd를 통해 이동한 뒤에 ex ) cd C:\Users\user\Desktop\codeEngine\upx303w 다음 명령어를 입력하면 된다. upx -d 언패킹할 파일 형식 upx / 추가 옵션 / 언패킹할 파일 언패킹 시에 언패킹할 파일이 열려있으면 에러가 발생한다. ( 디버거로 켜둔 경우에도 해당 ) CodeEngn_basic_10 Basic RCE L10 OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 문제의 시작은 실행으로 시작한다. 실행시켜봤더니 아무런 입력이 되지 않았다. About버튼을 눌러도 소개같은 글이 있을 뿐 아무런 도움될만한 것은 없었다. 그래서 어떻게 패킹되어있는 것 같아 봤더니 Aspack v2.0패킹이 되어있다. Aspack v2.0 언패킹을 해야할 것 같다. 언패킹을 진행하기 전에 Aspack의 특징을 살펴보려한다. Aspack은 'PUSHAD' - 압축해제 코드 - 'POPAD' - 'RETURN' ( OEP로 이동 )의 과정을 거쳐 진행된다. 때문에 우리는 Ollydbg를 이용해서 OEP를 우선적으로 알기 위해서 .. CodeEngn_basic_9 Basic RCE L09 StolenByte를 구하시오 Ex) 75156A0068352040 이번 문제 파일은 UPX패킹이 되어있다. 이번에 StolenByte라는 단어가 나왔기 때문에 UPX패킹을 언패킹하지 않은채 실행, 언패킹을 진행한 뒤에 실행 총 2번 실행을 시켜볼것이다. 언패킹전 실행 / 1 언패킹후 실행 / 1 패킹 전, 언패킹 후 실행 / 2 언패킹전과 후의 차이점은 첫번째 출력되는 텍스트 박스이다. 패킹되어있는 파일은 정상적으로 출력시키지만 언패킹시킨 파일은 텍스트가 깨져서 에러를 출력한다. ( 첫 번째 창에서의 문제 ) 문제를 풀기에 앞서 우리는 문제에서 제시한 StolenByte에 대해서 알아야 한다. StolenByte란 패커가 훔친 바이트이다. StolenByte는 패커가 이동시킨 .. CodeEngn_basic_8 Basic RCE L08 OEP를 구하시오 Ex) 00400000 이번 문제는 UPX 패킹이 되어 있으니 UPX 언패킹을 진행한 뒤에 실행시켜봤다. ( 패킹이 되어있으면 OEP를 찾기 어렵다. ) 언패킹 후 실행 화면 계산기 프로그램으로 보인다. 계산은 정상적으로 작동한다. 디버깅을 진행하기 앞서서 문제가 요구하는 OEP란 Original Entry Point의 약자로 언패킹된 프로그램의 실제 시작주소를 뜻한다. Ollydbg로 연 뒤에 보이는 맨 첫 부분이 정답이다. 이번 문제는 UPX 언패킹만 제대로 진행한다면, 매우 매우 쉬운 문제인 것 같다. CodeEngn_basic_7 Basic RCE L07 컴퓨터 C 드라이브의 이름이 CodeEngn 일 경우 시리얼이 생성될 때 CodeEngn은 'ß 어떤 것'으로 변경되는가 문제 파일 실행 화면 Serial 값을 입력 받고 틀리면 에러 창을 출력한다. 올바른 Serial 값을 찾아야 한다. 이번 문제 파일은 Ollydbg로 해당 문제 파일을 열고 살짝만 내리다 보면 간단하게 에러, 성공 출력을 찾을 수 있기 때문에 문자열의 비교문도 비교적 간단히 찾을 수 있었다. EAX와 0을 비교하여 EAX가 0이면 성공을 출력하고 아니면 에러를 출력한다. EAX는 역시 함수의 리턴 값을 저장하기 때문에 위에서 call을 이용한 함수에서 받아올 것이다. 오른쪽에 주석으로 ConcatString이라는 말로 문자열을 이어주는 함수가 총 3개 정도 .. CodeEngn_basic_6 Basic RCE L06 Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD 이번 문제는 upx패킹이 되어있었기 때문에 upx언패킹을 진행한 뒤에 실행시켰다. 실행시켜봤을 때 다음과 같은 화면이 출력된다. 아무 값이나 입력했을 때에는 에러 메세지를 출력시킬 뿐 아무 일도 일어나지 않았다. 일단 문제를 풀기에 앞서 OEP란 Original Entry Point의 약자로 언패킹된 프로그램의 실제 시작주소를 뜻한다. 우리가 알아야 할것에 대해서도 알아보았으니 이제 디버깅을 시작해보자 OEP를 가장먼저 찾을 건데 이건 찾을 필요도 없다. 왜냐하면 디버거에 프로그램을 넣으면 맨 처음부분으로 가기 때문이다. 이번 문제같은 경우 함수의 PUSH EBP.. 이전 1 2 3 4 5 다음