ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pwnable.kr 1번 Toddler's bottle fd
    WeekHack/Pwnable 2019. 9. 19. 01:43
    반응형
    SMALL

    pwnable.kr 을 처음부터 풀어보려합니다. 오랜만에 작성하는 포너블 라업이군요

    ssh pwnable.kr -p 2222 fd/guest


    실행

    아무것도 하지 않고 실행하면 pass argv[1] a number이 뜨고 종료됩니다.


    분석

    c언어 파일이 주어져서 따로 바이너리를 디스어셈블하거나 리버싱할 필요가 없었습니다.

     

    이런 식으로 소스코드가 있습니다. 간단히 작동 순서를 풀어 써 본다면,

    1. 입력 받은 값을 정수형을 바꾼 다음 0x1234(4660)만큼 뺀 값을 fd에 저장합니다.
    2. 32만큼 buf에 read()함수로 입력을 받습니다. 그 중 첫 인자인 file_descriptor은 fd의 정수값입니다.
    3. 만약 read로 입력 받은 값이 LETMEWIN\n일 경우 flag를 출력합니다.


    익스플로잇

    따라서 0x1234(4660)에 1을 더한 4661을 첫번째 인자값으로 보내면, fd가 1이 되어 정상적으로 read()할 수 있을 것입니다.

    4661을 첫번째 인자값으로 넣으면 아무것도 넣지 않고 실행했을 때와 다르게 입력을 받고 아무거나 입력을 할 경우 learn about Linux file IO가 뜨고 그냥 종료됩니다.

     

    해당 입력이 LETMEWIN이 되어야 할 것 입니다.

    성공적으로 문제가 풀리는 것을 확인할 수 있습니다.

     

     

    반응형
    LIST

    댓글

Copyright ⓒ 2019, WeekHack