본문 바로가기
시스템 해킹/FTZ

level9

by sonysame 2016. 9. 13.


일단, setreuid()에 대해 알아보자.


http://shayete.tistory.com/entry/1-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%95%B4%ED%82%B9%EC%9D%B4%EB%9E%80-linux-%EA%B8%B0%EC%B4%88%EB%AA%85%EB%A0%B9%EC%96%B4-vim-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95


이번 포스팅은 기본적인 내용들이 많기 때문에 혹시 (지루하실까봐) 리눅스를 한번이라도 접해보신 분들이라면 아실법한 /bin/sh 와 /bin/bash의bash drop privileges에 대해 잠깐 설명드리고자 합니다.

해킹 공부해보신 분들 중에, 왜 우분투에서는 setuid bit가 걸린 바이너리에서 system("/bin/sh")만 쓰면 특정 권한을 얻을 수 있는데 system("/bin/bash")를 했을 때 특정 권한을 얻을 수 없는지 궁금했던 적 없으신가요.



 이상하게 /bin/bash를 이용할 때는 setreuid(0, 0)를 걸어줘야 루트권한을 얻을 수 있는데요, 

이건 debian계열 bash 의 특정버전 이상부터 bash drop privilege 정책이 걸려있어서 bash를 이용할 때는 setuid 권한이 임시적으로 제거됩니다.




cd /usr/bin입력

ls -al bof 를 한다.

bof 실행

buffer overflow문제 기초중의 기초


char buf2[10];

char buf[10];


메모리는 위에서 아래로 가고

스택은 아래서 위로 간다.


일단, 10byte 채우고,

fgets가 최대 40byte 받으니까

넘어가게끔 한다.

그런데, buf2와 buf1사이에 더미가 생긴다.

더미가 6byte라고 하는데, 그 의미를 조금 더 생각해보자.

쨌든 그래서,  

a를 16번 입력, go 입력하면 level10의 id를 갖게 된다. 


그 다음 level10의 권한으로 my-pass




interesting to hack!



'시스템 해킹 > FTZ' 카테고리의 다른 글

level 12  (0) 2016.10.12
level 11  (0) 2016.10.12
level8  (0) 2016.09.12
level7  (0) 2016.09.10
level6  (0) 2016.09.10