본문 바로가기

(구) 개발창고/Windows

쉘코드 만들기 따라하기 (Windows cmd)

반응형

hyunmini 님이 쓰신 윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇 

쉘코드 만들기 따라하기




cmd를 실행시키는 c 코드 작성



디버그 모드를 이용하여 어셈블리어 확인



불필요한 코드 제거 후 어셈으로 재코딩, 함수의 주소는 따로 찾아내야한다.




어셈코드 작성 후 디버그 모드에서 바이트 코드 확인



바이트 코드로 코드 재작성


DEP 해제 후 컴파일



cmd 뒤에 0을 넣어주는 것 때문에 byte ptr [ebp-1], 0 부분에서 \x00(null 바이트)가 발생함.



null 바이트 제거를 위하여 byte ptr [ebp-1], 0 을 xor ebx, ebx  mov dword ptr [ebp-4], ebx 로 대체.

ebx 값을 불러오기 위해서는 4바이트(dword)가 필요하고 dword를 사용할 경우 byte ptr [ebp-1]의 위치에 0을 넣기 위해서 dword ptr [ebp-4], 0 을 하면 같은 위치에 들어감.

이후 나머지 3바이트를 cmd로 덮어씌우면 cmd\0 가 그대로 들어가게 된다. 


널바이트를 제거한 쉘코드가 정상적으로 실행된다.


반응형