ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pwnable.kr #1 fd
    Wargame Site/Pwnable.kr 2019. 2. 24. 13:31


    이번엔 SQL Injection 이 아닌 System 쪽이다 !!


    너무나도 유명유명한 Pwnable.kr 을 풀어보려한다.





    ssh 로 접근하여 푸는 문제들이 대부분인 것 같았다.











    일단 접근한 계정 정보를 파악해보자.

    user, group 권한이 모두 fd 로 되어있었다.

    그리고나서, 파일들의 정보를 보기위해 'ls -al' 를 입력하였다.









    ls 로 파일들을 보니 fd 의 권한으로는 fd 의 실행권한, 

    other 를 통한 fd.c 의 읽기 권한이 있는 것을 확인할 수 있었다.




    fd 의 소스코드로 추정되는 fd.c 를 우선 읽어보았다.









    우선 처음보는 read 라는 함수를 이해하는 것이 필요했다.







    man read 를 통해 기본적인 파라미터를 파악한 뒤, 이중 fd(file descriptor) 에 대한 이해가 필요한 것 같아서 더 검색해보았다.

    그 결과 fd 가 0 이면 표준입력 (stdin), fd 가 1 이면 표준출력 (stdout), fd 가 2 이면 표준에러 (stderr) 를 담당한다고 한다. 









    '아 그럼 표준 입력으로 작동하게 하면 되겠다' 라는 생각에 입력을 해봤더니 flag 가 출력되었다.









    하지만 나를 괴롭혔던 것은 ./fd 4661 , ./fd 4662 를 입력해도 문제가 풀렸다는 점이었다.




    그래서 여러 블로그를 뒤져봐도 명쾌한 답은 없었다. 


    0 : stdin, 1 : stdout, 2 : stderr 와 같이 fd 의 용도가 정해져 있다.

    본래의 프로그램에서 '프로그램을 실행했을 때, 에러가 발생한다면 stderr 에 저장한다' 와 같은 약속을 하고 있다.


    하지만, 이 문제에서 read 하는 것이 어떤 것인지에 관해서 상관하지 않고 있다.

    읽은 "LETMEWIN" 이 에러에 관한 것인지, 입력에 관한 것인지, 출력에 관한 것인지는 상관없이 buf 에 저장하고 있다.


    따라서, 4660, 4661, 4662 어떤 것을 넣어주어도 Clear 가 가능하다.




    문제를 이해하는데 큰 도움을 주신 KHJ 님 감사합니다 ㅎㅎ
























    'Wargame Site > Pwnable.kr' 카테고리의 다른 글

    Pwnable.kr #5 cmd2  (0) 2019.04.11
    Pwnable.kr #4 cmd1  (0) 2019.04.09
    Pwnable.kr #3 bof  (0) 2019.03.08
    Pwnable.kr #2 collision  (0) 2019.02.24

    댓글

Designed by Tistory.