한땀한땀 정성들인 코딩
bof 방지기법 그외(objdump 사용,rtl chain) 본문
1. GS
- 윈도우 상에서 스택을 보호하는 기법
- 함수 상세 로컬 문자열 버퍼
- buffer와 ret 사이에 stack cookies를 추가
- return 주소를 보호
- .data영역에 저장된 cookie 값과 비교
- 변조된것으로 판명되면 abort()
2. SAFE SEH
-window 예외 처리 기법
-에러처리 레코드를 덮어 쓰는 것을 방지
-링커에서 안전한 예외처리 목록 생성
3. CANARY
-리눅스상에서 보호기법
-윈도우의 stack cookie개념과 비슷
-termiator canaries : 문자열의 끝문자로 구성하는 방법. null,cr,lf,0xff 값의 조합
-random canary : 임의의 canary값 지정
-null canary : null로 구성
objdump
-역어샘블
-기계어(헥사코드)로 이루어진 바이너리 파일을 역 어샘블
objdump -d -S (오브젝트파일.o 혹은 실행파일)
-S : 소스 출력, -g옵션컴파일이 아니면 소스출력되지않음
-I : 소스코드의 라인
RTL CHAIN
-rop의 기본
-계속된 라이브러리 함수들의 호출
-즉 rtl을 연속적으로 사용
#include <stdio.h>
void func1(int val1){
printf("func1 %d \n",val1);
}
void func2(int val2){
printf("func2 %d \n",val1);
void func3(int val3){
printf("func3 %d \n",val1);
}
int main(int argc, char *argv[]){
char buf[16];
strcpy(buf,argv[1]);
return 0;
}
입력 인자(32bit기준)
buf[16] + sfp[4] + func1주소(ret[4])+func2주소+func3주소(func1의 인자)
-func1의 인자 같은 경우는 시스템환경에 따라 달라질수 있으니 gdb로 확인하자.
gadget기법
-필요한 어셈블리 명령어를 사용
pop ebp
ret
를 사용
obj dump를 써서 저 명령어가 시작되는 주소를 찾는다, = pop ebp의 주소
*eip는 코드가 실해되면 다음 어샘 명령어로 넘어간다.
-esp의 위치를 잘 파악하자
leave
-mov esp,ebp
-pop ebp
ret
-pop eip
-jmp eip
'자격증 > 정보보안기사' 카테고리의 다른 글
리눅스 계정관리 (0) | 2017.02.10 |
---|---|
취약점 진단도구(시스템) (0) | 2017.02.09 |
bof방지 기법 ASCII-Armor (0) | 2017.02.09 |
bof방지 기법 ASLR (0) | 2017.02.09 |
bof방지 기법 non-executable (0) | 2017.02.09 |