상세 컨텐츠

본문 제목

Poison NULL Byte

SYSTEM HACKING/Exploit Tech

by koharin 2020. 6. 12. 15:38

본문

728x90
반응형

NULL off by one 발생으로 취약점이 발생하는 것을 이용한 공격 기법이다.

한 바이트의 NULL을 추가로 입력해 인접한 청크 size의 하위 1바이트를 덮을 수 있을 때 다른 기법과 연계해서 공격하는 기법이다.

 

NULL off by one: 한 바이트의 NULL을 추가로 입력하는 것.

 

예제1

//gcc -o null1 null1.c                                                         
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int readdata(char *buf, int len){
    read(0, buf, len);
    *(char*)(buf + len) = '\x00';
}
int main(){
    char *buf1;
    char *buf2;

    buf1 = malloc(0x28);
    buf2 = malloc(0xf0);

    readdata(buf1, 0x28);

    return 0;
}

 

readdata 함수를 통해 첫 번째 청크에 입력받는다.

첫 번째 힙 청크의 크기는 0x28이므로 인접한 다음 청크의 size와 인접하다.

 

readdata 함수에서 memory leak을 방지하기 위해 입력된 데이터 뒤에 NULL 바이트를 추가한다.

 

(1) 두 청크 할당된 후

(2) 첫 번째 청크 데이터에 0x28 바이트 입력 시 다음 청크의 size인 0x101을 0x100으로 변조할 수 있다.

prev_inuse 비트를 조작할 수 있으면 unsafe unlink와 같은 기법과 연계해서 공격할 수 있다.


 

728x90
반응형

'SYSTEM HACKING > Exploit Tech' 카테고리의 다른 글

House of Force  (0) 2020.06.12
Unsafe Unlink  (0) 2020.06.12
Unsorted bin attack  (0) 2020.06.11
Tcache House of Spirit  (0) 2020.06.11
fastbin dup  (0) 2020.06.10

관련글 더보기