전체 글

Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Pwnable/Techniques

FEBP

Fake EBP는 다음과 같은 상황에서 사용한다. buffer + SFP + RET를 사용자가 다른 값으로 덮을 수 있음 "\xbf" 로 시작하는 영역, 즉 스택의 주소를 RET 주소로 사용할 수 없음 "\x40"로 시작하는 영역, 즉 라이브러리 함수의 주소를 RET 주소로 사용할 수 없음

Pwnable/Techniques

FPO

FPO(Frame Pointer Overflow) 기법은 다음과 같은 조건에서 유효하며 사용가능하다. - main 함수 이외에 하나 이상의 sub 함수가 존재해야 한다. - SFP의 마지막 1byte를 변조할 수 있어야 한다. 일반적인 스택의 상황이 아닌 SFP 의 마지막을 변조한 상태의 스택을 나타낸 것이다.

Pwnable/Techniques

Prologue & Epilogue

void function_1(**argv) {} int main() { function_1(argv); } 위와 같은 소스코드를 가진 프로그램을 실행했을 때 Stack Frame 에 어떠한 값들이 저장되고 각 레지스터들이 어느 위치를 가리키는지 알아보자.

Pwnable/HackCTF

Beginner_Heap

64bit + Heap 영역 문제이다. Heap 영역은 Stack 영역과 다르게 메모리가 낮은 주소 → 높은 주소 로 자란다는 것을 기억하자. 우선 beginner_heap.bin 바이너리 파일을 분석해보자. main 함수부터 보자. 첫번째 fgets 로 입력받는 값은 v3 + 1 에 저장되고, 두번째 fgets 로 입력 받는 값은 v4 + 1 에 저장된다. 첫번째 입력에서 v3, v3 + 1, v4 를 NOP 로, v4 + 1 을 exit_got 로 입력해주면 될 것 같다. 메모리 구조를 살펴보자. —————————— High Address | v4 + 1 (8) | —————————— | v4 (16) | —————————— | v3 + 1 (8) | —————————— | v3 (16) |..

Lucvs
Lucvs