Bypass Canary
개념
BOF가 발생할 수 있는 환경이지만 buffer를 모두 채운 뒤에 다음 4바이트가 Canary로 채워져 있어 해당 값이 변경이 될 때 에러를 출력하면서 프로그램이 종료되는데, 이 Canary를 유추해서 우회를 하는 방법을 말한다.
설명
1. Brute Force
buffer를 모두 채운 후 다음 4바이트가 Canary로 채워져 있는데 1바이트를 넘어가도록 buffer를 채운다.
그러면 Canary 영역에 1바이트가 침범하여 값이 다를 경우 에러를 출력하는데 이때 이 1바이트를 0x00 ~ 0xFF(256)까지 모두 넣어서 뜨지 않는 경우를 찾아낸다.
이렇게 4바이트를 모두 찾아낸다.
2. recv, strncpy
recv와 strncpy 함수는 문자열을 입력받을 시 NULL이 들어가지 않는다.
이를 이용하여 buffer내에 printf() 기능을 넣고 buffer를 채워준다면 printf()는 NULL이 있는 곳 까지 찍어낼 수 있으므로 canary값 까지 출력한다.
3. Canary 루틴 노출
Canary를 만드는 루틴이 노출될 경우 역연산을 통해서 canary를 알아낼 수 있다.
'High Level Technique > System Hacking' 카테고리의 다른 글
Double Stage Format String Bug (DSFSB) (3) | 2016.06.09 |
---|---|
Use After Free (UAF) (0) | 2016.06.02 |
SigReturn Oriented Programming (SROP) (4) | 2016.05.07 |
Return Oriented Programming (ROP) - final (0) | 2016.05.04 |
Return Oriented Programming (ROP) - step 2 (1) | 2016.05.04 |