Description

Category: Pwnable

Source: pwnable.kr

Points: 10

Author: Jisoon Park(js00n.park)

Description:

Mommy! what is a file descriptor in Linux?

Write-up

주어진 fd.c 파일을 살펴보면, 15번째 라인에 친절하게 flag 파일의 내용을 보여주는 부분이 있다.

wiki

main() 함수의 첫 라인을 보면 하나 이상의 숫자를 입력받도록 되어 있고, 첫번째로 입력받은 숫자에서 0x1234를 뺀 값을 file descriptor로 하여 read() 함수를 호출하고 있다.

프로그램을 살펴보면 어디에도 fopen() 등을 통해 file descriptor를 얻어오는 부분이 없으므로 기본으로 주어지는 standard file descriptor를 사용해야 함을 유추할 수 있다.

file descriptor가 read() 함수에 사용되므로 사용자의 입력을 받는 stdin을 사용하면 되며, stdin은 0번 descriptor를 가지므로 0x1234에 해당하는 4660을 호출 인자로 주면 된다.

read() 함수를 통해 읽어들인 문자열이 "LETMEWIN"과 같은지 비교하기 때문에, 아래와 같은 방법으로 flag 값을 확인할 수 있다.

wiki

(굳이 python을 사용할 필요 없는 예제이나 참고를 위해 사용하였다.)

Flag : mommy! I think I know what a file descriptor is!!

'writeups > Pwnable' 카테고리의 다른 글

Pwn4  (0) 2019.11.23
Pwn3  (0) 2019.11.23
Pwn2  (0) 2019.11.23
Pwn1  (0) 2019.11.23
collision  (0) 2019.11.23

+ Recent posts