security/포너블 - dreamhack 22

[Dreamhack Wargame] FSB_Overwrite

Full RELRO, NX, PIE, No canary, 64bit ELF buf에 엔터포함 0x20자까지 입력 가능, 입력값이 바로 printf 인자로 들어감 => fsb 취약점 changeme 전역변수를 1337로 바꾸기만 하면 됨 PIE 적용되어있어서 changeme 주소 계속 바뀜 - 스택에 있는 main함수 주소(rsp+0x48)를 leak해서 changeme 주소를 구한다 * changeme 주소가 rip+0x200700로 결정되므로 CODE 섹션과 DATA 섹션 간 offset 일정 - 스택상에 changeme 주소를 쓰고 * 처음에는 %ln으로 changeme 주소를 스택에 쓰려고 했으나 ($rsp+0x58 = %17$p 위치에 rsp+0x148 주소가 담겨있다) 왠지 모르게 큰 값의 경우..

[Dreamhack Wargame] Master Canary

Master Canary라는 개념을 새로 알게 되기도 했고 Core Dump file을 이용한 분석 방법도 새로 알게 되어 메모 겸 자세히 남긴다 Master Canary TLS (Thread Local Storage) 영역은 스레드의 전역변수를 저장하기 위한 공간으로 Loader에 의해 할당된다 FS 세그먼트 레지스터는 TLS 영역을 가리킨다 스택 버퍼를 사용하는 모든 함수에서는 같은 카나리 값(fs:0x28에 위치한 값)을 사용한다. 다른 쓰레드도 마찬가지 임의 함수에서 stack canary를 leak할 경우 다른 함수에 응용 가능 TLS 주소(FS 세그먼트 레지스터 주소)에서 0x28 바이트만큼 떨어진 주소에 위치한 랜덤 값을 우리는 Master Canary라고 부른다 디버거에서는 $fs_base..