일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Multimeida
- 윈도우 프로세스 종류
- 디지털포렌식 with CTF
- Multimedia
- blkls
- memory
- Window process
- 슬퍼유
- 24시간의 전사
- pythonchallenge
- 실기
- 네트워크관리사2급
- 네트워크 보안
- CTF-D
- 2022시작
- disk
- 윈도우 프로세스
- 생활코딩 html
- 생활코딩
- slack space
- vinetto
- 정보처리기사 필기 합격
- html
- ftz
- N0Named
- ZIP 파일구조
- network
- 포렌식
- 디지털포렌식
- 는 하지마...
- Today
- Total
ssoL2 TISTORY
pwnable.kr [fd] 본문
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
https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/itoi.htm
https://dev-ahn.tistory.com/96
'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 |