반응형
커닝
http://research.hackerschool.org/Datas/Research_Lecture/overflow.txt
http://geundi.tistory.com/118
------------------------ 높은 메모리 주소
Stack
------------------------
Heap
------------------------
Data
------------------------
Text
------------------------ 낮은 메모리 주소
자
먼저 스택은 거꾸로 자란다. 즉, 변수에 메모리를 내어 줄 때 메모리의 높은 주소에서부터 메모리 낮은 주소로 메모리 할당.
단, 실제 메모리 대입 결과는 다르다. 아래서부터이다. 아래보고 이해.
------------------------
ret
sfp (4byte)
Stack
buf1
buf2
------------------------
in Stack
------------------------
ret
------------------------
sfb(4byte)
------------------------
※ sfp : stack frame pointer
gcc 2.96 이상에서는 dummy가 중간중간 낀다.
BOF의 목적은 ret에 자신이 원하고자 하는 코드가 존재하는 곳의 주소를 덮어씌워주는 것이다. (환경변수 애용)
마침 strcpy는 buf에 넣을 때 검사를 하고 넣지 않고 그냥 쳐 넣는다.
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
------------------------
c
b Data
a
------------------------
Text
------------------------
in Stack
------------------------
ret
------------------------
sfb(4byte)
------------------------
7
6
5
4
3
2
1
------------------------
G
F
E
D
C
B
A
------------------------
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 |