접속 ㄱㄱ
read 함수는 무엇일까요??
형태 |
ssize_t read (int fd, void *buf, size_t nbytes) |
|
|
|
|
인수 |
int fd |
파일 디스크립터 |
|
void *buf |
파일 읽어들일 버퍼 |
|
size_t nbytes |
버퍼의 크기 |
라는데 저희가 조작 가능한 부분이 fd 죠? 그럼 fd 즉 파일 디스크립터는 무엇일까요????
정의 : 파일을 관리하기 위해 OS가 필요로 하는 파일의 정보를 가지고 있는 것입니다.
이게 값을 0, 1, 2 를 가지는데
0 : 표준입력 stdin
1 : 표준출력 stdout
2 : 표준에러 stderr
라고 합니다.
저 문제를 뚫기 위해서는 buf 값이 LETMEWIN이 되야하는데 buf에 원하는 값을 넣기 위해서는 fd가 표준입력이 되면 되겠죠?
0x1234 가 4660 입니다. argv[1]에 4660 을 넣으면 4660 - 0x1234 = 0 이 되서 fd 가 표준입력이 되니 buf값을 넣을수 있지 않을까요?
첫문제라 그런지 간단 하네요
'Pwnable' 카테고리의 다른 글
[Plaid] Ropasaurusrex (0) | 2017.06.28 |
---|---|
[Toddler's Bottle] cmd1 , cmd2 (0) | 2017.05.30 |
[Toddler's Bottle] flag (0) | 2017.05.30 |
[Toddler's Bottle] random (0) | 2017.05.30 |
[Toddler's Bottle] bof (1) | 2017.05.24 |