둘둘리둘둘리둘둘리둘둘리둘둘리둘

[Hacker school FTZ] Level9 -> Level10 본문

War game/해커 스쿨 FTZ

[Hacker school FTZ] Level9 -> Level10

dool2ly 2015. 8. 20. 16:01



10byte 크기 buf, buf2가 있고 fgets로 40byte를 표준입력에서 받아와 buf에 넣는다.

buf에 입력을 받고 buf2를 "go"와 비교해서 맞으면 쉘을 띄워준다..

소스를 보고 스택을 유추해보면 대충 [그림 1]과 같다.


Low address

 buf (10byte)


 buf2 (10byte)



 SFP

 RET

High address

[그림 1]


buf가 10byte이니까 fgets에서 더미로 10byte를 체우고 go 를 입력하면 될것같지만 buf와 buf2사이에 CPU가 처리하기 편하도록 줄을 맞추기 위해 쓰레기값이 들어가기 때문에 아래 결과처럼 생각처럼 성공하지 않을것이다.



그럼 디버거로 buf크기를 구해야 할탠데 아래처럼 bof파일에는 setuid가 level10권한으로 걸려있어서 디버거로 까볼수가 없고, 복사해서 까볼려고해도 읽기 권한이 없어서 까기 힘들다.

[level9@ftz level9]$ ls -l /usr/bin/bof

-rws--x---    1 level10  level9      12111 Sep 10  2011 /usr/bin/bof


결국 찍던가 더미를 10부터 하나씩 늘려가도 되겠다.


--풀이--



Comments