#include <stdio.h>
void copy_buf(char *buf, int sz) {
char temp[16];
for(i = 0; i <= sz; i++)
temp[i] = buf[i];
}
int main(void) {
char buf[16];
read(0, buf, 16);
copy_buf(buf, sizeof(buf));
}
off_by_one 취약점은 함수나 반복문의 의해 반복 횟수를 고려하지 못해 버퍼의 경계를 넘어버리는 취약점이다
위의 코드는 OBO 취약점이 발생하는 코드로 16길이의 버퍼를 꽉 채운다면 copy_buf에서 <= 조건식 때문에 최대버퍼+1
번 작업을 수행하게 된다
근데 겨우 버퍼 하나 넘어 버렸다고 뭐가 큰일 이냐고 할 수 있는데 다른 조건만 충족하면 다른 공격 기법으로 연계 할 수 있다
바로 SFP 라는 취약점으로 익스는 쉽지만 이론은 매우 어렵다고 보면 된다
'해킹 공부' 카테고리의 다른 글
[NOOBHACK] Out of Boundary (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 |