ASLR 걸린 취약한 함수 테스트 하려다가 자주 쓰게 되는데 저장할 공간이 없어서 저장함
KEYWORD : LINUX dynamic 하게 library 호출 , 라이브러리 동적 호출, 동적으로 라이브러리 호출 , dlopen dlsym dlfcn.h ..
root@k1rh4:~/strcp# ls
strcpy2.c test.c
root@k1rh4:~/strcp# gcc -g -c -fPIC strcpy2.c
root@k1rh4:~/strcp# ls
strcpy2.c strcpy2.o test.c
root@k1rh4:~/strcp# gcc -shared -lc -o libstrcpy2_so.so strcpy2.o
root@k1rh4:~/strcp# ls
libstrcpy2_so.so strcpy2.c strcpy2.o test.c
root@k1rh4:~/strcp# gcc -o test test.c -ldl
-------------------------------------------------------------------------
root@k1rh4:~/strcp# cat test.c
#include<stdio.h>
#include<dlfcn.h>
#include<string.h>
int main(int argc, char *argv[]){
char buff[100]="";
void * lib_handle=NULL;
int (*func)(char *, char *);
func =NULL;
lib_handle = dlopen("./libstrcpy2_so.so",RTLD_NOW);
if(!lib_handle){
printf("dlopen failed [ %s ] \n",dlerror());
return 0;
}
func = dlsym(lib_handle,"strcpy2");
func(buff,argv[1]);
printf("[%s]\n\n",buff);
if(!func){
printf("dsym failed [%s ] \n ", dlerror());
}
dlclose(lib_handle);
return 0;
}
---------------------------------------------------------------------
root@k1rh4:~/strcp# cat strcpy2.c
#include<stdio.h>
#include<string.h>
int strcpy2(char *v1 ,char *v2){
strcpy(v1, v2);
return strlen(v2);
}
root@k1rh4:~/strcp#
* 공유 라이브러리 작성 컴파일 지식
gcc -fPIC -c <sorce file>
-fPIC : 위치와 관계없이 수행할 수 있는 코드로 컴파일
gcc -shared -Wl,-soname,appsolute.so.0 -o libapplib.so.0.0.0 <object files>
-shared : 공유 라이브러리로 생성
-Wl : 콤마로 구분된 옵션을 링커로 전달
-soname : 로더가 식별하는 라이브러리 이름
-o : 결과로 만들 파일이름
여기서 로더가 인식하는 이름과 실제 파일이름이 다를 수 있다.
그리고 여기서 만들고자 하는 링킹 형태는 다음과 같다.
gcc -o test test.cc -L<library path> -lappsolute
이에 심볼릭 링크를 생성하여 링커에게 이름과 실제 파일을 연결시킨다.
# 컴파일 시 -lappsolute 를 주면 링커는 libappsolute.so 를 찾는다. 따라서 libappsolute.so 를 생성한다
ln -s libapplib.so.0.0.0 libappsolute.so
# 컴파일 후 실행 파일을 실행할 경우 appsolute.so.<Version> 을 탐색한다
ln -s libapplib.so.0.0.0 appsolute.so.0
해당 링크를 추가한 후 아래 파일을 수정하여 라이브러리 경로를 추가한다.
/etc/ld.so.conf
경로 추가 후 적용
ldconfig
'C,C++ > C' 카테고리의 다른 글
[ attribute 관련 속성 정리 ] (0) | 2014.07.02 |
---|---|
[ kernel ] 루트킷 분석하다가 조사한 커널 함수들. (0) | 2014.05.02 |