정보보안/CodeEngn 썸네일형 리스트형 09[Basic RCE] stolenbyte를 찾으라고 한다. stolenbyte는 처음들어보는 상태로 문제를 직면한다. upx로 패킹 되어있으니 전 문제처럼 언패킹하면 글씨가 다깨지고 이상해진다. 그리고 stolenbyte에 대해서 알아보니 stolenbyte는 언패킹의 원리를 이용하여 OEP를 찾아서 패킹하는 것을 OEP이전에 코드를 놔둬서 고장나게 만드는 것 같다. 위는 패킹 되지 않은 코드를 디버깅할때 pushad, popad 부분을 본다. popad 뒤의 3개의 push문이 우선 답이다. 언패킹한 프로그램의 비어있는부분과 정확하게 크기가 일치한다. 08[Basic RCE] 파일을 다운받아 DIE로 분석해보니 패킹된 프로그램이다. upx로 언팩한다음 다시 DIE로 Entrypoint를 확인할 수 있었다. 프로그램은 실행도 안해봤다. 07[Basic RCE] 문제 내용은 다음과 같다. 먼저 string 검색으로 분기점을 찾아낸후 breakpoint 건 부분들을 살펴보면 GetVolume~~ 함수에서 드라이브의 이름을 가져오고 이를 이용해서 암호를 만드는것 같다. Drive의 이름을 가져와서 07.40225C에 저장하기 때문에 401099가 호출된 이후에 해당 메모리를 CodeEngn으로 수정한후 코드를 실행하면 주석 되어있는 부분처럼 시리얼 넘버도 나오고 CodeEngn -> ????Engn으로 바뀌었는가가 문제가 물어보는 바이다. 02[Basic RCE] 정말 실행이 안된다. PE파일을 열어보고 문제가 있는지 보려는데 뭔가 메세지가 남겨져있다. JK3FJZh 01[Basic RCE] 비워진 글을 채우고 복습삼아 다시 해보도록 하였다. 문제는 다음과 같다. 많이 봤던 abexcrackme 모듈이다. bp를 걸어놓고 보면 drive가 반환값이 3이나오지만 비교하는 부분에서는 1이된다. 그리고 3인지 아닌지 비교한다. 따라서 3+ 2= 5가 해답이 될것이다. 13 [Basic RCE] 정답 문자열을 구하는 문제인것 같다. 이런식이 었다. 이번에 처음 안 사실인건데 .net(C#) 으로 구성된 프로젝트는 디버깅을 할 수가 없다. C#으로 빌드하면 중간에 코드가 만들어져 JIT컴파일러에 의해 컴파일되고 운영체제가 바로 실행한 수 있는 코드로 변환된것이다. 이런 방식을 Intermidiate Language 방식 이라한다. 따라서 dotPeek 이라는 툴을 이용하면 코드를 확인할 수 있다. 그리고 str을 출력해보면 09 [Basic RCE] StolenByte 를 구하라고 하는데 StolenByte가 뭔지 잘몰라서 검색을 해보니 OEP와 비슷한것 같다. 파일을 실행했을때는 abexcrackme3가 있었는데 이를 패킹 한것같았다. 디버거에서 잡아주는 EntryPoint에 pushad가 있어 popad를 찾아서 StepOver하니 OEP를 찾을 수 있었다. 05, 06[Basic RCE] 키를 찾는 문제인것 같다. 실행하면 다음과 같이 나온다. 아무런 값을 넣고 실행한뒤 나오는 경고문을 string으로 찾으면 다음과 같이 Id와 SerialNumber가 나온다. 6번문제는 Pack되어 있는 프로그램에 OEP와 Serial을 구하는 문제이다. Serial은 위와 같은 방식으로 똑같이 찾을 수 있다. OEP같은 경우에는 Ollydbg에서 이를 자동으로 찾아주지만 직접따라가 봐도 찾을 수 있다. 이전 1 2 다음