Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 기계학습
- 생활코딩
- The Loard of BOF
- 자료구조 복습
- c
- SWEA
- Javascript
- BOJ Python
- 숙명여자대학교 정보보안 동아리
- 파이썬
- hackctf
- siss
- PHP 웹페이지 만들기
- XSS Game
- 머신러닝
- C언어
- BOJ
- Sookmyung Information Security Study
- CSS
- Python
- 웹페이지 만들기
- WarGame
- hackerrank
- lob
- HTML
- 백준
- 풀이
- 드림핵
- 숙명여자대학교 정보보안동아리
- c++
Archives
- Today
- Total
혜랑's STORY
Memory Corruption - C (1) : Off-by-one 본문
무지성 공부방/Dreamhack SystemHacking
Memory Corruption - C (1) : Off-by-one
hyerang0125 2021. 1. 19. 14:55본 포스팅은 DreamHack 사이트의 Memory Corruption - C(1) 강의 내용을 요약한 것이다. 강의의 주소는 다음과 같다.
해커들의 놀이터, Dreamhack
해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향
dreamhack.io
#Off by one
Off-by-one 취약점은 경계 검사에서 하나의 오차가 있을 때 발생하는 취약점이다. 이는 버퍼의 경계 계산 혹은 반복문의 횟수 계산 시 < 대신 <=을 쓰거나, 0부터 시작하는 인덱스를 고려하지 못할 때 발생한다.
-> 예제(off-by-one.c)
// off-by-one-1.c
#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));
}
위 코드에서 반복문은 i가 0일 때부터 sz일 때까지 총 sz+1번 반복하게 된다. 따라서 sz+1만큼 데이터가 복사되고, off-by-one 취약점이 발생하게 된다.
-> 실습
'무지성 공부방 > Dreamhack SystemHacking' 카테고리의 다른 글
Linux Exploitation & Mitigation Part 2 (1) (0) | 2021.02.21 |
---|---|
Linux Exploitation & Mitigation Part 1 (2) (0) | 2021.02.07 |
Linux Exploitation & Mitigation Part 1(1) (0) | 2021.01.30 |
Memory Corruption - C (1) : Out-of-boundary (0) | 2021.01.19 |
Memory Corruption - C (1) : 버퍼 오버플로우 (0) | 2021.01.19 |