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

+ Recent posts