CodeEngn 3

[문제 풀이] CodeEngn Basic RCE L04

먼저 디버거를 사용하지 않고 바로 실행했을 때는 "정상"이라는 문구를 띄우는 창이 나온다.디버거를 사용한 경우"디버깅 당함"이라는 문구를 띄우는 창이 나온다. x32dbg를 이용해 열고 F9으로 EP를 확인한 다음 F8로 한단계씩 실행해보면서 출력화면에 변화가 생기는 지점을 확인한다. breakpoint를 걸고 다시 실행해보자.저부분에서 함수의 내부로 들어가보니 디버깅 당함과 정상이라는 문구가 있는 것을 확인할 수 있다.저 문구가 있기전 이름에서부터 뭔가 디버깅을 감지할 것 같은 것이 보인다.확인해보면IsDebuggerPresent를 콜하기전에는 eax의 값이 0인데IsDebuggerPresent를 지나고 나면 1로 바뀐 것을 확인 할 수 있다.디버깅을 하고 있는 중이기 때문에 je를 만나기전 test..

[문제 풀이] CodeEngn Basic RCE L02

코드엔진 basic 2를 풀어보았다.dbg에서 실행이 안되기 때문에 HxD라는 것을 사용해보았다. HxD(Hexediter)를 처음 사용해보기때문에 HxD에 대해 간략하게 알아보고 시작하겠다. 처음 실행화면새로운 파일 하나를 만들어서 확인해보니 Offset, hex값,hex값의 text표현으로 이루어져있다.가운데 hex값과 text를 원하는 것으로 바꿀 수도 있는 것 같다.바뀐 값은 빨간색으로 표현된다. 어떤식으로 표현되는지 알았으니 프로그램을 넣어보자.00000000를 확인했을 때 4D 5A로 되어있다면 PE 파일이라는 의미인데, 확인해보니실행파일이라는 것이 확인되었다.Decoded text를 확인하면서 내려보니Nope, try again! 실패문구가 있다.다음으로 Yeah,you did it! 성공문..

[문제 풀이] CodeEngn Basic RCE L01

일단 무슨 소리인지 알기위해서 프로그램을 실행해보자. GetDriveTypeA함수를 확인하기 위해서 x32dbg를 사용그냥 실행하면 00401026에서 ZF가 1이 아니기 때문에 40103D로 jump하지 못해 Error창이 출력되게 된다.ZF를 1로 만들어 40103D로 이동시켜야 성공했다는 문장이 뜨는 것 같다.je가 실행되게 만들기위해 GetDriveTypeA에서 설정된 값을 확인해보면eax는 3esi는 00401000이다. cmp를 만나기 전까지 esi의 값을 inc(+1)씩 cmp를 만나기 전까지 +3하고 eax의 값을 dec(-1)씩 총 -2를 한다.cmp eax esi가 0이 되게 하기 위해서는 eax의 값이 5로 설정되고 esi의 값이 0으로 설정 되어야한다.설정 후 실행해보면ZF가 1로..