스택9 StackBasedOverflows-Windows-Part2 (익스플로잇 작성을 위한 어셈블리어) 원본 : 번역본 : 나머지 2개는 좀 한가해지는대로 해서 올리겠습니다. ㅎㅎㅎ 2011. 6. 7. StackBasedOverflows-Windows-Part1 (기본 개념) 원본 : 번역본 : 제가 직접 번역을 해보았는데 오역이 있으면 알려주시기 바랍니다. (고등학교 때도 독해 안해봤는데 ... ㅋㅋㅋ 제가 이런걸 해볼줄이야 ... ㄷㄷ) 그리고 이걸 기본으로 해서 제가 다시 문서를 작서할 생각입니다. 2011. 6. 7. Stack 구현 #include using namespace std; struct node { int data; node* p; }; class stack { public: node* head; node* tail; int sz; stack() { head = NULL; sz = 0; tail = NULL; } void push(int num) { node* new_node = new node; new_node ->data=num; new_node ->p=tail; tail=new_node; sz++; } int pop() { if(isEmpty()) { return -1; } int tmp = tail->data; node* del_node = tail; tail = tail->p; delete del_node; sz.. 2010. 7. 15. 간단한 리눅스 RTL BOF RTL BOF : (Return To Library Buffer Over Flow) 문제 환경 : bof1.c : 공격대상 파일 소스 bof1 : 공격대상 실행파일 문제 실행 결과 : [linuxer@sclclass2 s12091455]$ ./bof1 enter id dakuo you entered dakuo program ends here 문제요구 조건 : RTL BOF 공격을 이용해 enter id 입력하는 구문으로 되돌아오기. enter id .................. you entered .......... enter id you entered ......... ................ 사전조사 : [linuxer@sclclass2 ~]$ cd s12091455 [linuxer@scl.. 2010. 3. 22. 함수 호출 과정 스택 프레임(Stack Frame) : 함수 호출시 할당되는 메모리 블록(지역변수의 선언으로 인해 할당되는 메모리 블록) 함수 호출이 완료되면(return) 기존에 선언된 지역변수에 접근이 불가능하다.(할당된 메모리가 반환되기 때문) (ex. fct1() 함수가 호출되면서 함수 내부에 선언된 변수 c, d 가 스택에 할당되는데 이 메모리 블록을 fct1() 함수의 스택 프레임이라 한다. fct1() 함수가 반환되면 스택 프레임도 반환된다.) SP 레지스터 : 스택 프레임을 가리키는 레지스터 sp 레지스터 값은 변수가 하나 하나씩 할당될 때마다 증가하면서 다음 변수가 할당될 메모리 위치를 가리킨다. 호출한 함수가 종료될 경우, 스택 프레임 단위로 sp 레지스터 값을 이동시켜야 한다. (함수 안에서 선언된 .. 2010. 3. 6. 쓰레드(Thread) 쓰레드(Thread) : 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델 1. 독립적인 스택(Stack)을 가진다. 2. 코드 영역을 공유한다. (위와 같이 쓰레드 main 함수는 코드 영역에 존재하는 모든 함수를 호출할 수 있다) 3. 데이터 영역과 힙을 공유한다.(전역변수와 동적 할당된 메모리 공간 공유 가능) 4. 프로세스 핸들 테이블 공유 프로세스 핸들 테이블에 대한 핸들 정보는 프로세스 내의 쓰레드 들에게 공유되어 각 쓰레드가 그 핸들에 대해 접근이 가능하다 (참고 : 같은 프로세스내의 쓰레드들은 스택 이외의 모든 것을 공유한다) 프로세스와 쓰레드 Windows 에서 프로세스는 단순히 쓰레드를 담는 상자다. 실제 프로그램 흐름을 형성하는 것은 쓰레드이다. 따라서 스케줄러(Windo.. 2010. 2. 28. 이전 1 2 다음