WARGAME/pwnable

[pwnable.kr] fd

lucykorea414 2023. 7. 15. 02:30
728x90

ssh 로 접속해서 풀어봅시다.

(저는 맥북의 터미널 이용했습니다.)

 

 

접속이 되었네용

그럼 이제 ls -al 명령어를 써서 파일을 한번 확인해보겠습니다.

 

fd.c를 먼저 읽어봅시당

 

우선 이 코드를 이해하기 위해선 리눅스의 파일디스크립터에 대해서 알아보겠습니다

파일 디스크립터는 파이프, FIFO, 소켓, 터미널, 디바이스, 일반파일 등 종류에 상관없이 모든 열려있는 파일을 참조할때 씁니다.

파일디스크립터  목적  POSIX 이름  stdio 스트림 
 0  표준 입력  STDIN_FILENO  stdin
 1  표준 출력  STDOUT_FILENO  stdout
 2  표준 에러  STDERR_FILENO  stderr

[ 출처: https://dev-ahn.tistory.com/96 ]

 

쉽게 말해서, read(fd, buf, 32)라고 되어있는 부분에 fd=0이어야지 입력을 받을 수 있다는 것!

그리고 atoi() 함수는 문자 스트링을 정수값으로 변환하는 함수입니다.

 

따라서

int fd = atoi( argv[1] ) - 0x1234;

요 부분에서 fd가 0 이 되어야 하니깐 argv[1] 값으로 0x1234 (정수: 4660) 을 입력하고 LETMEWIN 이라는 문자열을 입력하면 flag 파일이 읽어집니당~~

 

 

^__^

728x90