반응형
root-me.org [APP - SYSTEM]
ELF x86 - Race condition 풀이
문제 소스 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <stdio.h> #include <string.h> #include <sys/ptrace.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #define PASSWORD "/challenge/app-systeme/ch12/.passwd" #define TMP_FILE "/tmp/tmp_file.txt" int main(void) { int fd_tmp, fd_rd; char ch; if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) { printf("[-] Don't use a debugguer !\n"); abort(); } if((fd_tmp = open(TMP_FILE, O_WRONLY | O_CREAT, 0444)) == -1) { perror("[-] Can't create tmp file "); goto end; } if((fd_rd = open(PASSWORD, O_RDONLY)) == -1) { perror("[-] Can't open file "); goto end; } while(read(fd_rd, &ch, 1) == 1) { write(fd_tmp, &ch, 1); } close(fd_rd); close(fd_tmp); usleep(250000); end: unlink(TMP_FILE); return 0; } | cs |
임시 파일에다가 패스워드를 저장해주는데, 임시 파일을 미리 만들어 두면 프로그램이 종료되도 사라지지 않고 남아 있는 것을 이용한다.
/tmp/tmp_file.txt를 만들어 두고, 권한설정을 한다. chmod 777 tmp_file.txt
프로그램 실행 ./ch12
그 뒤에 tmp_file.txt를 보면, 패스워드가 적혀있음을 확인할 수 있다.
반응형
'WAR GAME > Root-Me.org' 카테고리의 다른 글
root-me.org [CRACKING] ELF - 0 protection , ELF - x86 Basic , PE - 0 protection , PE DotNet - 0 protection 풀이 (0) | 2019.01.22 |
---|---|
root-me.org [WEB - SERVER] 풀이 (0) | 2019.01.22 |
root-me.org [WEB - CLIENT] 풀이 (1) | 2019.01.22 |
root-me.org [STEGANOGRAPHY] Gunnm Squared 풀이 (0) | 2019.01.21 |
root-me.org [APP - SYSTEM] ELF x86 - Format string bug basic 3 풀이 (0) | 2019.01.21 |