오늘은 메모리 컬렉션인 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
'해킹 공부' 카테고리의 다른 글
[NOOBHACK] off by One (OBO), 취약점 (0) | 2023.02.08 |
---|---|
[NOOBHACK] 어셈블리어 읽는 방법 (0) | 2022.08.17 |
[NOOBHACK] C언어를 어셈블리어로 변환하기 (0) | 2022.08.17 |
[NOOBHACK] 2진수의 메모리 한계점 (0) | 2022.08.17 |
[NOOBHACK] 어셈블리어 구동 방식과 명령어 (0) | 2022.08.17 |