Security

BOF 기초 **

gukbap 2011. 8. 30. 23:18
반응형
커닝
http://research.hackerschool.org/Datas/Research_Lecture/overflow.txt
http://geundi.tistory.com/118

------------------------ 높은 메모리 주소

Stack

------------------------

Heap

------------------------

Data

------------------------

Text

------------------------ 낮은 메모리 주소


먼저 스택은 거꾸로 자란다. 즉, 변수에 메모리를 내어 줄 때 메모리의 높은 주소에서부터 메모리 낮은 주소로 메모리 할당.
단, 실제 메모리 대입 결과는 다르다. 아래서부터이다. 아래보고 이해.

#include <stdio.h>

int a, b, c;

int main(void)
{

char buf1[7] = "1234567" ;
char buf2[7] = "ABCDEF";

return 0;

}


------------------------
ret

sfp (4byte)
                                     Stack
buf1

buf2
------------------------
                                     Heap
------------------------
c

b                                   Data

a
------------------------
                                     Text
------------------------



in Stack
------------------------
ret
------------------------
sfb(4byte)
------------------------
7
6
5
4
3
2
1
------------------------
G
F
E
D
C
B
A
------------------------ 


 ※ sfp : stack frame pointer

gcc 2.96 이상에서는 dummy가 중간중간 낀다.

BOF의 목적은 ret에 자신이 원하고자 하는 코드가 존재하는 곳의 주소를 덮어씌워주는 것이다. (환경변수 애용)
마침 strcpy는 buf에 넣을 때 검사를 하고 넣지 않고 그냥 쳐 넣는다.


















 
반응형

'Security' 카테고리의 다른 글

SQL Injection  (0) 2014.06.06
level1 **  (0) 2011.09.02
port 80(http) 공격 **  (0) 2011.08.19
hackerschool level7  (0) 2011.07.14
hackerschool level6 ctrl + c  (0) 2011.07.14