System/FTZ
[FTZ] level9
MitNy
2017. 9. 13. 13:39
level9의 힌트는 다음과 같다.
다음은 /usr/bin/bof의 소스이다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
main(){
char buf2[10];
char buf[10];
printf("It can be overflow : ");
fgets(buf,40,stdin);
if ( strncmp(buf2, "go", 2) == 0 )
{
printf("Good Skill!\n");
setreuid( 3010, 3010 );
system("/bin/bash");
}
}
이를 이용하여 level10의 권한을 얻어라.
bof만 봐도 buffer over flow 문제라는 것을 알 수 있다.
buf와 buf에 공간을 10씩 주지만 fgets에서는 40만큼 입력받아 buf에 저장한다.
그 후에 buf2에서 크기2만큼을 비교했을 때 go와 일치하면
"Good Skill!" 이 출력되고 /bin/bash가 실행된다.
python으로 여러번 입력을 하다가 여러번 하다보니 쉘을 따긴 했지만
코드 분석도 하면서 풀었다
level10의 쉘을 따낸 후 my-pass 명령어를 입력하면
level10의 password를 알아낼 수 있다.
level10 password is interesting to hack!