본문 바로가기

해킹 공부

[NOOBHACK] Out of Boundary

오늘은 메모리 컬렉션인 Out of Boundary에 대해 됐고 

OOB란 버퍼의 길이 범위를 벗어나와 인덱스에 접근할 때 터진다

BOF와 다른 점은 임의로 원하는 인덱스에 접근 한다는 점이다

#include <stdio.h>
int main() {
    int win;
    int idx;
    int buf[10];
    
    printf("Which index? ");
    scanf("%d", &idx);
    printf("Value: ");
    scanf("%d", &buf[idx]);
    printf("idx: %d, value: %d\n", idx, buf[idx]);
    if(win == 31337){
        printf("Theori{-----------redacted---------}");
    }
}

아래와 같은 코드가 있을때  idx를 입력받은 코드에 10 이상과 0 미만의 idx를 처리하는 코드가 없으므로 OOB가 발생한다

디버깅을 할 때 버퍼의 순서를 이해 한다면 win의 값을 조작 할 수 있다

 

https://learn.dreamhack.io/14#11

 

로그인 | Dreamhack

 

dreamhack.io