[문제]
[풀이]
1. ssh를 이용해 원격 접속
<ssh 사용 형태>
ssh [사용자 계정] @ [원격지 ip]
-wget 명령으로 pwnable.kr 의 ip 주소를 알아낼 수 있음. (128.61.240.205)
-ssh fd@128.61.240.205 –p 2222로 접속
-p 2222 는 포트번호임
- 접속 후 pw란에 guest 입력 시 접속이 된 것을 확인할 수 있음.
2. ls –al 명령으로 내부 파일 및 권한 확인
-최종적으로 flag를 찾아야 하지만, flag의 접근권한이 소유자(읽기), 그룹(읽기), 그 외(없음)으로 접근 불가함.
-fd의 그룹 권한에 fd로 설정되어 있어 접근 가능함. (읽기, 실행 가능)
-fd 파일이 컴파일된 fd.c 파일을 읽음 (cat fd.c)
> int fd = atoi(argv[1]) -0x1234;
: argv[]로 입력받은 문자열을 정수형으로 변환해 -0x1234 연산한 값을 fd에 저장
fd 가 0이 되면 표준 입력이 되므로 atoi(argv[1]) 이 0x1234가 되면 표준 입력이 됨.
> len = read(fd, buf, 32);
: fd에서 32byte 만큼 읽어서 buf에 저장
>if(!strcmp("LETMEWIN\n", buf)){
printf("good job :)\n");
system("/bin/cat flag");
: buf의 문자열이 LETMEWIN이면 good job이라는 메시지와 함께 flag를 출력하도록 되어있음.
3. ./fd 로 fd 파일 실행
- 입력 결과, argv[1]에 들어갈 번호를 입력하라는 결과를 확인할 수 있었음.
> 0x1234 입력(16진수로 입력할 경우 결과 출력x)
> LETMEWIN 입력
-10진수인 4660을 입력한 결과, flag값을 얻을 수 있음.
flag : mommy! I think I know what a file descriptor is!!
<핵심 개념>
*fd(file descriptor)는 0이 아닌 정수값을 가짐
표준 입력(Standard Input) -> 0
표준 출력(Standard-Output) -> 1
표준 에러(Standard Error) -> 2로 할당함!
flag : mommy! I think I know what a file descriptor is!!
'Wargame > pwnable.kr' 카테고리의 다른 글
[Pwnable.kr] input2 (0) | 2021.07.22 |
---|---|
[Pwnable.kr] random (0) | 2021.07.22 |
[Pwnable.kr] passcode (0) | 2021.06.03 |
[Pwnable.kr] flag (0) | 2021.06.03 |
[Pwnable.kr] bof (0) | 2021.06.03 |