스터디 그룹/ProjectH4C

ProjectH4C 3개월 3주차 과제 (pwnable.kr - fd)

 


📖 1) 문제 파악

ssh로 pwnable.kr에 접속해보자.

이렇게 문제파일의 소스코드를 제공해준다. 

 

/bin/cat flag 를 실행시켜보도록 하자.


📖 2) 문제 분석

결국 우리가 생각해야 하는 것은, 어떻게 buf에 LETMEWIN\n을 넘겨줄 것이냐 이다.

 

먼저 한 줄 위를 본다면 read(fd, buf, 32)가 존재한다.

read함수의 경우 첫 번째 인자로 int fd;를 받게 된다.

 

  • fd = 0 : 표준 입력 (STDIN_FILENO)
  • fd = 1 : 표준 출력 (STDOUT_FILENO)
  • fd = 2 : 표준 에러 (STDERR_FILENO)

이다. 즉, buf에 값을 받게 만들 것이라면 fd자리에 0을 넣어주어야 한다.

하지만 그 위에서 fd를 보게 된다면 프로그램을 실행할 때 두 번째 인자를 정수로 변환하고 0x1234를 빼준다.

 

이 fd를 0으로 맞추고 싶다면 우리는 4660 (0x1234)을 넣어주어야 한다.

 

즉 ./fd 4660을 해주면 된다. 그러면 값 입력을 기다릴 것이다.


📖 3) 문제 풀이

 

문제를 풀었다.