ssoL2 TISTORY

pwnable.kr [fd] 본문

challenge/pwn

pwnable.kr [fd]

ssoL2 2019. 7. 8. 17:26

Mommy! what is a file descriptor in Linux?

 

read() 함수

- 설명 : open() 함수로 열기를 한 파일의 내용을 읽는다

- 헤더 : unistd.h

- 형태 : ssize_t read(int fd, void *buf, size_t nbytes)

- 인수 : 

int fd : 파일 디스크립터

void *buf : 파일을 읽어 들일 버퍼

size_t nbytes : 버퍼의 크기

- 반환 : ssize_t 정상적으로 실행되었다면 읽어들인 바이트 수를, 실패했다면 -1을 반환

 

 

 

파일 디스크립터

- 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값

- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스

 

프로세스가 파일 open할 때, 커널에서 파일 디스크럽터 숫자 중에서 가장 작은 값을 할당해주고

그 다음 프로세스가 파일 접근할 때 할당 받은 숫자인 FD 값을 이용해 파일을 지칭할 수 있다.

1. 표준 입력(Standard Input) = 0

2. 표준 출력(Standard Output) = 1

3. 표준 에러(Standard Error) = 2

 

 

 

atoi

- 헤더 : stdlib.h

- 형식 : int atoi(const char *string);

문자 스트링을 정수값으로 변환한다.

 

 

 

 

 

#include 
#include 
#include 
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;

}

 

 

1. argc <2 >> 인자 1개 필요

2. 밑에 read함수가 표준입력 되도록 해서 LETMEWIN 입력해서 풀면 되겠다

3. 그럼 read함수의 인자인 파일 디스크립터, fd가 0이여야함

4. atoi(argc[1]) = 0x1234 >> argv[1] = 4660

 

 

fd@prowl:~$ ./fd 4660
LETMEWIN
good job :)
mommy! I think I know what a file descriptor is!!

 

 

 

 

 

 

 

출처

http://forum.falinux.com/zbxe/index.php?mid=C_LIB&document_srl=466628

 

C 라이브러리 함수 - read() 파일 읽기

 

forum.falinux.com

https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/itoi.htm

 

IBM Knowledge Center

Please note that DISQUS operates this forum. When you sign in to comment, IBM will provide your email, first name and last name to DISQUS. That information, along with your comments, will be governed by DISQUS’ privacy policy. By commenting, you are accept

www.ibm.com

https://dev-ahn.tistory.com/96

 

리눅스 - 파일 디스크립터

File Descriptor (파일 디스크립터) [출처: http://dev.plusblog.co.kr/22] 1. 파일 디스크립터 - 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값 - 프로세스에서 열린 파일의 목록을 관리하는 테이..

dev-ahn.tistory.com

 

'challenge > pwn' 카테고리의 다른 글

pwnable.kr [flag]  (0) 2019.07.09
pwnable.kr [bof]  (0) 2019.07.08
pwnable.kr [collision]  (0) 2019.07.08
lob [Level2] gremlin > cobolt (1)  (6) 2018.11.04
lob [Level1] gate > gremlin  (4) 2018.11.03
Comments