본문 바로가기

High Level Technique/Shellcoding

execve shellcode

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