PIE 디버깅

Technique 2021. 7. 25. 18:56

b * 0 r x/20i $pc 두 번째 call 아래에 브레이크 포인트 d 1 r x/10i $r12 젤 아래에 나오는 주소가 main 함수의 주소 [출처] 10. GDB로 PIE 디버깅|작성자 JSec

SROP

Technique 2021. 7. 25. 18:30

ROP의 변형 sigreturn 함수 이용 sigreturn() 시스템 함수는 Signal을 처리하는 프로세스가 Kernel Mode에서 User Mode 돌아 올때 stack을 복원하기 위해 사용되는 함수 restore_sigcontext() 함수는 COPY_SEG(), COPY() 함수 등 을 이용하여 stack에 저장된 값을 각 레지스터에 복사 즉, ROP와 같이 값을 레지스터에 저장할 수 있는 Gadget이 없어도 sigreturn() 함수를 이용해 각 레지스터에 원하는 값을 저장 가능

IO_FILE_Vtable overwrite

Technique 2021. 7. 25. 18:30

IO_FILE은 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체 fopen, fwrite과 같은 함수를 통해 파일 스트림을 열때 힙에 할당 IO_FILE 구조체의 멤버 변수중 _flags는 파일에 대한 추가권한을 의미, 0xfbad0000가 magic number _chain : IOFILE 구조체는 chain필드를 통해 linked_list를 만든다. 실제 파일 스트림을 열때는 io_file_plus 구조체 리턴 io_file_plus 구조체는 파일 스트림에서의 함수 호출을 용이하게 하기 위해 io_file 구조체에 함수 포인터 테이블을 가리키는 포인터를 추가한 구조체 io_jump_t에는 파일에 관련된 여러 동작을 수행하는 함수 포인터들이 저장. 이들은 fread, fwrite..

tcache stashing unlink attack

Technique 2021. 6. 21. 00:07

glibc 2.27, 2.29, 2.31에서 테스트 하였음. #include #include #include int main(){ unsigned long stack_var[0x10] = {0}; unsigned long *chunk_lis[0x10] = {0}; unsigned long *target; setbuf(stdout, NULL); printf("This file demonstrates the stashing unlink attack on tcache.\n\n"); printf("This poc has been tested on both glibc-2.27, glibc-2.29 and glibc-2.31.\n\n"); printf("This technique can be used when yo..

Article Thumbnail