(rtl은 내가 만든 연습용 소스이다!)
ldd명령어( 공유 라이브러리의 주소를 출력(?) ) 을 이용해 주소를 확인해보니
여기저기로 톡톡 날아다니는것을 알 수 있다
바로 ASLR 기법이 걸린 상태이다 .
이제 ASLR 기법을 해제하는 방법을 소개하고자 한다 .
첫번째는 /proc/sys/kernel/randomize_va_space 를 조작하는 방법이다
randomize_va_space 는 0 , 1 , 2 의 값을 가진다
0값은 randomize를 해제하는 옵션이고 1 , 2 는 실행하게 하는 옵션이라고 생각하면 된다 그렇다면 randomize_va_space를 훔쳐보도록 하자!
2로 값이 설정되있다 randomize가 실행되고 있다
그렇다면 이 값을 조절해보자!
그런데 그냥 실행하면 퍼미션 디나이드가 뜬다
randomize 값을 조절 하려면 root의 권한이 필요하다
echo 0 > /proc/sys/kernel/randomize_va_space 라고 입력해준후에
randomize의 값을 확인해보니 0으로 변한것을 알 수 있습니다 .
라이브러리의 주소가 더 이상 변하지않는 것을 확인할 수 있습니다!
두 번째로 소개드릴 방법은 setarch xxxxxx -R 입니다
[xxxxxx 에는 각 리눅스의 버전 ex) linux64 liunx32 i386 등등, 을 적어주시면 됩니다
addr-no-randomize 라고 적혀있네요!
이 명령어를 실행하면 쉘이 뜨는데요 그 쉘 안에서는 aslr이 풀려있는 상태입니다!
이 명령어는 딱히 권한이 필요 없으므로그나마 이 방법이 가장 좋다고 생각할 수 있습니다!
쉘이 열렸고 주소 값이 변하지 않는 것을 확인할 수 있습니다
세번째로 소개 해드릴 방법은
ulimit -s unlimited 입니다!
코어덤프와 상당히 유사하지요 ? 스택을 꽈악 채워버려서 주소값이 움직이지 못하도록 합니다!
다만 32비트에서만 사용이 가능하고 64비트에서는 사용을 못합니다!
'시스템 기법 정리' 카테고리의 다른 글
PLT , GOT [상세히] ,GOT Overwrite (0) | 2016.06.02 |
---|---|
Format String Attack (FSB) (0) | 2016.05.30 |
plt , got , rtl chain , ASLR (0) | 2016.05.28 |
버퍼 오버플로우 - 2 RTL (개념 정리, 기초) (0) | 2016.05.27 |
버퍼 오버플로우 - 1 (1) | 2016.05.25 |