ssh fd@pwnable.kr -p2222 (pw:guest) 이 곳으로 원격접속을 합니다.
어떤 파일이 있나 확인해 보겠습니다.
fd@ubuntu:~$ ls -l
total 16
-r-sr-x--- 1 fd_pwn fd 7322 Jun 11 2014 fd
-rw-r--r-- 1 root root 418 Jun 11 2014 fd.c
-r--r----- 1 fd_pwn root 50 Jun 11 2014 flag
fd, fd.c, flag 파일이 있네요.
fd@ubuntu:~$ cat flag
cat: flag: Permission denied
flag 파일을 볼 수 있는 권한은 없습니다.
fd.c는 fd의 소스코드인것 같으니 확인해보겠습니다.
fd@ubuntu:~$ cat fd.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[32];
int main(int argc, char* argv[], char* envp[]){
if(argc<2){
printf("pass argv[1] a number\n");
return 0;
}
int fd = atoi( argv[1] ) - 0x1234;
int len = 0;
len = read(fd, buf, 32);
if(!strcmp("LETMEWIN\n", buf)){
printf("good job :)\n");
system("/bin/cat flag");
exit(0);
}
printf("learn about Linux file IO\n");
return 0;
}
fd의 값은 argv[1] - 0x1234가 들어가게 되고, argv[1]은 우리가 입력한 값이니 조작이 가능합니다.
buf에 "LETMEWIN"를 넣어 주어야 하므로 fd의 값을 0으로 하게 해서 입력을 받도록 하고, LETMEWIN을 넣어주면 될 것 같습니다.
자, argv[1]값으로 0x1234를 넣어 fd값을 0으로 만들어 줍시다.
atoi함수는 문자열을 정수로 바꿔주는 역할을 하기 때문에 0x1234를 10진수로 나타낸 4660을 입력하겠습니다.
fd@ubuntu:~$ ./fd 4660
LETMEWIN
good job :)
mommy! I think I know what a file descriptor is!!
'WAR GAME > Pwnable.kr' 카테고리의 다른 글
pwnable.kr [random] 풀이 (0) | 2018.02.26 |
---|---|
pwnable.kr [passcode] 풀이 (0) | 2018.02.26 |
pwnable.kr [flag] 풀이 (0) | 2018.02.26 |
pwnable.kr [bof] 풀이 (1) | 2018.02.26 |
pwnable.kr [collision] 풀이 (0) | 2018.02.25 |