Hackershcool level14 = )

 

해커스쿨 FTZ 레벨14 [BOF]

 

 

 

이번에는 fgets함수로 글자수 길이를 45바이트로 제한하고 있지만 buf배열의 크기가 20이므로 BOF가 발생할 수 있다. 그리고 check변수의 값이 0xdeadbeef라는 값이 들어가야 setreuid와 쉘이 뜨게 되어있다. 바로 쉘을 얻을 수 있으니 에그쉘 없이 BOF만을 이용해 check에 deadbeef라는 문자열을 넣어야 한다는 것을 추측할 수 있다.

 

 

main한 번 살펴보면 ①번 밑줄에서 56byte만큼 공간을 할당해주고 있고 ②번 밑줄에서 ebp-16만큼의 공간에서 문자열 비교를 해주고 있다. 그렇다면 쓰레기값 ‘40byte+비교문자열’이면 쉘이 뜰거라는 것을 알 수 있다. 인자 전달 방식은 이전의 Level12와 같이 gets와 같은 fgets이므로 cat 명령어와 Pipe를 이용하여 전달해주면 된다.

 

 

다음과 같이 공격이 성공하여 Level15의 패스워드를 얻을 수 있다.







'WarGame > Hacker School FTZ' 카테고리의 다른 글

해커스쿨 Level16  (0) 2013.03.31
해커스쿨 Level15  (0) 2013.03.30
해커스쿨 Level14  (0) 2013.03.29
해커스쿨 Level13  (1) 2013.03.28
해커스쿨 Level12  (0) 2013.03.27
해커스쿨 Level11  (0) 2013.03.25

+ Recent posts

티스토리 툴바