GOT overwrite 간단하게 연습 해보려고 합니다
환경은 SENTOS 6.7이며 보호기법은 다 걸려있는상태입니다
(보호기법은 필요없지만요!)
scanf , printf 어느쪽이든 상관없습니다 .
둘의 plt주소를 발견 한 후에 system함수로 뒤바꿔버리고
"%s" 대신에 "./a;" 가 실행되게 하여
root 권한이 걸린 파일을 실행시켜보겠습니다
먼저 scanf 혹은 printf의 plt 주소를 찾아보겠습니다
readelf -S 명령어를 통해 plt의 주소를 찾았습니다 .
그 뒤 gdb를 열어서 plt의 주소들을 봐보니
pintf 와 scanf 둘 다 보이는걸 확인할 수 있습니다
그중에서도 printf로 진행해보겠습니다
먼저 system 주소를 구했습니다
이제 %s의 주소를 구해야겠지요 ?
0x8048514를 이동시켜주네요
확인해봤더니 %s가 존재합니다
이 %s를 어떻게 a로 돌려서 공격하냐 ?
16진수로 주소값이 써주는상태고 SET으로 변경만 하면 되니까
./a; 를 만들어 줘야하니 . = 0x2e / = 0x2f a = 0x61 ; = 0x3b
리틀 엔디언으로 ./a; 는 0x3b612f2e 가 되겠습니다
그렇다면 이제 print plt에 system 주소를 주고
%s에 ./a;를 줘보겠습니다
이런식으로 실행이 되네요! 재밌습니다
'시스템' 카테고리의 다른 글
Loaded plugins : fastestmirror 에러 (0) | 2016.06.01 |
---|---|
cent os gdb 설치 (0) | 2016.05.29 |
Cent os 에서 xshell , putty 연동 (0) | 2016.05.29 |
cent os 컴파일러(gcc) 다운 (0) | 2016.05.28 |
함수 호출 규약(Calling Convention) (0) | 2016.05.27 |