Wargame/pwnable.kr

Pwnable.kr 문제 풀이-1.fd

핏디 2021. 5. 4. 00:25
SMALL

[문제]


[풀이]

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!!

 

LIST

'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