2.버퍼 오버플로우(Buffer overflow)의 뜻이 뭔가요? “버퍼(Buffer)”란 ...
2.버퍼 오버플로우(Buffer overflow)의 뜻이 뭔가요? “버퍼(Buffer)”란 ...
2.버퍼 오버플로우(Buffer overflow)의 뜻이 뭔가요? “버퍼(Buffer)”란 ...
- TAGS
- char
- www.hackerschool.org
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
버퍼 <strong>오버플로우</strong>-왕기초편<br />
<strong>2.버퍼</strong> <strong>오버플로우</strong>(<strong>Buffer</strong> <strong>overflow</strong>)<strong>의</strong> <strong>뜻이</strong> <strong>뭔가요</strong>?<br />
<strong>“버퍼</strong>(<strong>Buffer</strong>)<strong>”란</strong> 어떤 데이터가 한 곳에서 다른 곳으로 이동할 때,<br />
그 데이터가 일시적으로 보관되는 임시 기억 공간을 말합니다.<br />
예를 들어 한 프로그램 내에서 데이터가 이동할 때,<br />
한 프로그램에서 다른 프로그램으로 데이터가 이동할 때,<br />
한 프로그램에서 하드웨어(예를 들면 프린터)로 데이터가 이동할 때,<br />
한 네트워크에서 다른 네트워크로 데이터가 이동할 때, 등등..<br />
버퍼는 그 중간에서 데이터를 받거나 건네주는 역할을 합니다.<br />
앞<strong>의</strong> 예에서 우리가 “멍멍” 혹은 “구타”라고 입력한 데이터 역시 버퍼에<br />
임시 저장되고, 이후 그 값을 다시 화면에 출력할 때 사용하고 있습니다.<br />
./01/test.c<br />
main()<br />
{<br />
}<br />
char name[20];<br />
// 변수(버퍼) 선언<br />
printf(“당신<strong>의</strong> 이름을 입력하세요. : “);<br />
gets(name);<br />
// 변수(버퍼)에 입력<br />
printf(“아, 당신<strong>의</strong> 이름은 %s이군요.\n”, name); // 변수(버퍼)로부터 출력<br />
그리고 이처럼 C언어에선 변수(variable)가 버퍼로서 사용될 수 있습니다.<br />
23
버퍼 <strong>오버플로우</strong>-왕기초편<br />
<strong>2.버퍼</strong> <strong>오버플로우</strong>(<strong>Buffer</strong> <strong>overflow</strong>)<strong>의</strong> <strong>뜻이</strong> <strong>뭔가요</strong>?<br />
그럼 이번엔 <strong>오버플로우</strong>(Overflow)라는 단어를 생각해봅시다.<br />
over라는 단어는 “과하다”, “지나치다”는 <strong>의</strong>미를 가지고 있으며,<br />
flow란 “넘치다”라는 <strong>의</strong>미를 가지고 있습니다.<br />
두 <strong>의</strong>미를 합쳐보면, “과해서 넘쳐버리다.” 라는 <strong>의</strong>미가 됩니다.<br />
즉 버퍼 <strong>오버플로우</strong>란 용어를 풀어서 쓰면, “사용자가 입력한 데이터<strong>의</strong> 크기가 너무<br />
과하여 제한된 버퍼<strong>의</strong> 용량에서 넘쳐버렸다.” 가 됩니다.<br />
이는 앞서 우리가 경험 했었던 긴 문자열을 버퍼에 입력했던 행동과 일맥상통합니다.<br />
그리고 제한된 버퍼 영역을 벗어나면 다른 애꿎은 메모리 영역을 침범하면서 프로그램<br />
에 문제를 일으킬 수 있습니다.<br />
이 특성을 이용하면 재밌는 것들을 할 수 있는데, 예를 들면 패스워드 인증을 통과한다<br />
든지, 더 높은 권한을 획득한다든지, 혹은 원격<strong>의</strong> 다른 PC로<strong>의</strong> 접근 권한을 획득한다<br />
든지 하는 식입니다.<br />
24
버퍼 <strong>오버플로우</strong>-왕기초편<br />
<strong>2.버퍼</strong> <strong>오버플로우</strong>(<strong>Buffer</strong> <strong>overflow</strong>)<strong>의</strong> <strong>뜻이</strong> <strong>뭔가요</strong>?<br />
...공부를 너무 많이 했더니만<br />
나<strong>의</strong> 뇌 용량을 초과해버렸다...<br />
25