본문 바로가기

코드엔진

[codeengn]코드엔진 Advance RCE L01 문제: 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 ollydbg로 열어보려고 했는데 encrypt되어있다고 한다. PEiD로 보니, UPX로 패킹되어있음을 알 수 있다. cmd창에서 upx로 언패킹해주었다. 이제 ollydbg로 열어보도록 한다. ollydbg로 잘 열림을 확인했다. 종료에 대한 문제이므로 search for - intermodular calls를 확인한다. 시간과 관련 있는 문제이므로, timeGetTime에 set breakpoin on every~를 해준다. bp건 곳으로 가니까 이 부분이 나오고 그다음 bp로 가면 프로그램이 꺼져버린다. time 관련하여 연산하는 걸 찾아봐야 할 듯 하다. 일단 CALL EDI부분은 time.. 더보기
[codeengn]코드엔진 Basic RCE L19 문제: 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 밀리세컨드에 대한 내용이므로 call을 확인하면 될 것이다. 이 파일을 Ollydbg로 열어 Search for->All intermodular calls를 확인한다. 맨 위로 올라가면 된다. 그럼 시간에 대한 함수가 있는데 이러한 모든 함수에 BP를 건다. 좀 내려보니까 isDebuggerPresent 함수가 보인다. 뭔가 단서가 있을 듯 하여 BP를 걸어주었다. isDebugger가 있는 곳으로 이동해 JNE가 있어서 JE로 바꿔봤다. -> JE로 바꿨는데 이게 꺼지는 지름길이었다. 일단 JNE로 다시 바꾸고, timeGetTime함수가 있는 곳으로 이동했다. 바로 밑에 CMP가 있다. 조금 수상쩍지만 그냥 진행해본다. 좀 내려가다보면 여기로 오는.. 더보기
[CodeEngn]코드엔진 basic RCE L13 문제: 정답은 무엇인가 올리디버거를 통해 열어보려고 했는데, 파일을 시작할 수 없다고 한다. 패킹은 되어있지 않고 C#으로 작성됨을 확인했다. 디컴파일을 위해 .Net reflector을 다운받았다. 계속 +를 눌러 Main으로 들어갔다. 코드를 확인해보니 친절하게 decrypt도 마련되어있음을 확인할 수 있었다. source code를 export해본다. Start해준 후, 명시되어있는 디렉토리로 가서 파일의 위치를 알아놓는다. 그걸 visual studio에 추가해서 파일을 연다. 이렇게 파일을 해놓고 ctrl+f5를 통해 실행해본다. 비밀번호 입력창은 커녕 위치들과 처리되지 않은 예외만 나오고 프로그램이 종료됐다. 검색을 해보니, 내 코드는 좀 다른 사람들과 다름을 확인했다. https://whit.. 더보기
[CodeEngn]코드엔진 basic RCE L12 문제: Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 일단 Key를 구해야 한다. Ollydbg를 열어보니 이러한 함수가 보임을 확인했다. 일단 문자열을 확인한다.(Search for- ~strings) 들어가보니 정말 긴 문자열과 밑에 축하한다는 것이 보인다. 일단 축하한다는 곳으로 가본다. 맞다는 부분이 00401084이다. 이 부분으로 이동하라는 명령어가 있는지 확인해보도록 한다. 그런 명령어는 딱히 없는 듯 하다. 그럼 .. 더보기
[CodeEngn]코드엔진 basic RCE L11 문제: OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 OEP와 Stolenbyte를 찾는 문제이다. Ollydbg를 열면 PUSHAD가 되어있고, 밑에 NOP으로 채워져있는 것을 확인할 수 있다. NOP에 Stolenbyte가 있을 듯 하다. Ctrl+F를 통해 POPAD를 찾아보도록 한다. POPAD를 검색해보니 이 밑 부분이 NOP에 채워질 듯 하다. 일단 이 부분을 breakpoint로 해주었다. 이 부분까지 와보니, 아까는 없었던 문자열이 보인다. 윗부분에서 계속 F8을 눌러보니 이 부분으로 왔다. OEP는 004.. 더보기
[CodeEngn]코드엔진 basic RCE L 03 Basic RCE L03을 풀어보도록 한다. 비주얼베이직에서 스트링 비교함수 이름은? 함수의 경우는 dependency walker 또는 CFF Explorer을 사용하는 게 편하다. 나는 dependency walker를 사용했다. Dependency walker의 함수를 확인할 수 있으니, 함수의 이름으로 스트링 비교함수를 생각해보면 된다. 끝 더보기
[CodeEngn]코드엔진 Basic RCE Level01 Basic RCE Level01을 보도록 한다. HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가라고 묻고 있다. 파일을 우선 다운받아보고, 이를 ollydbg로 열어본다. ollydbg 사용법은 아래를 봐주면 된다.(x32dbg, x64dbg와 유사한 방식이기 때문에 아래를 봐도 무방하다) https://happylulurara.tistory.com/3?category=768326 일단 실행을 해보았다. 딱 봐도 'Nah... This is not a CD-ROM Drive!'라고 할 듯 하다. F8을 통해 프로그램을 실행해보도록 한다. 'Make me think your HD is a CD-Rom.'으로, HD를 CD-Rom으롤 만들어달라고 한다. .. 더보기