execve shellcode
본격적으로? 쉘을 실행시켜보도록 하겠습니다. execv를 이용하여 /bin/sh를 실행하는 쉘 코드를 만들어보도록 하겠습니다.
execve의 인자 값은 다음과 같습니다.
int execve(const char *filename, char *const argv[], char *const envp[]) 입니다.
filename에 /bin/sh가 들어가고, argv[]에 /bin/sh의 주소를 넣고, envp[]에 널을 넣습니다.
소스코드 작성하기 x86
eax값에 11을 넣고 pop을 이용해 스택에 저장된 /bin/sh의 주소를 가져옵니다. ecx에 널을 넣고 커널에 넘겨줍니다.
컴파일 후 실행하면 정상적으로 쉘이 실행된 것을 확인할 수 있습니다.
소스코드 작성하기 x64
x86 소스코드와 다른 점은 그저 레지스터만 달라졌을뿐 방식은 같습니다.
컴파일 후 실행하면 정상적으로 쉘이 실행된 것을 확인할 수 있습니다.
'High Level Technique > Shellcoding' 카테고리의 다른 글
NOT Encoder (0) | 2016.03.14 |
---|---|
XOR Encoder (0) | 2016.03.14 |
RIP 상대주소 이용하기 (0) | 2016.03.13 |
JMP-CALL-POP 기술 (0) | 2016.03.13 |
Hello World Shellcode (0) | 2016.03.13 |