-
Mac ASLRHack/Pwnable 2015. 12. 7. 10:20
맥에서 리눅스와같이 ASLR이 존재한다.
힙주소, 스택주소등을 계속해서 랜덤화 시켜준다. 간단한 바이너리로 테스트를 해보면 확인해볼수있다.
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int a;
char *x = (char *)malloc(256);
printf("Library: %p\n",&malloc);
printf("Heap Addr: %p\n",x);
printf("Stack Addr: %p\n",&a);
}
힙을 확인하기위해 malloc으로 동적으로 할당해주었고, 스택을확인하기위해 지역변수, 라이브러리주소는 malloc 라이브러리를통해 확인해보기위해 위와같이 작성하였다.
HackCat:~ Songsangjun$ ./aslrtest
Library: 0x7fff947a70b2
Heap Addr: 0x7fcce8403130
Stack Addr: 0x7fff511a3bfc
HackCat:~ Songsangjun$ ./aslrtest
Library: 0x7fff947a70b2
Heap Addr: 0x7ff5bb403130
Stack Addr: 0x7fff519e3bfc
결과는 위와같이 Library 주소는 따로 바뀌지않고 힙어드레스와 스택만 바뀌었다. 라이브러리 주소도 바뀌는걸로 아는데 수상하지만 추후에 확인해볼예정이다.
64비트에서 저렇게 주소가 랜덤화되니 익스플로잇하려하니 막상 답이없닷..
전 버전들에서는 DYLD_NO_PIE라는 환경변수를 수정해서 ASLR을 해제하고, -no_pie 라는 옵션을 추가해서 컴파일하면 꺼졌었는데 엘케피탄 버전에서는 상관이없는것같다.
'Hack > Pwnable' 카테고리의 다른 글
Embedded Firmware Bug Hunting (0) 2016.01.05 Mac mprotect (0) 2015.12.07 otool (object tool) (0) 2015.12.07 kext(kernel extension) (0) 2015.12.07 Fake EBP (0) 2015.12.04