ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cmd1 Write-up
    표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019.04.04 03:16

    이번 문제는 어렵다기보다는 비교적 쉬운 문제에 속한다.

    코드를 보도록 하자!!




    filter 함수에 우리가 넣는 argv[1]이 인자로 넘어가는데

    strstr함수를 이용하여 r을 return하고 있다.

    strstr( ) 함수의 return값은 해당 문자열의 위치 포인터인데

    이 문제에서는 flag , sh, tmp 중 어떠한 문자열이라도 argv[1]에 속한다면

    1을 return하게 된다. 하나라도 발견된다면 참이되어서 main함수에서의

    if문을 통과할 수가 없다. 통과하더라도 argv[1]이 system() 함수에서

    명령을 실행할 수 있는 문자열이여야 한다.


    가장 기본적으로 생각할 수 있는 것은 일단 우리는 flag를 봐야하기

    때문에 argv[1]로 "/bin/cat flag"를 생각해볼 수 있다.

    하지만 flag가 들어가 있으므로 if문에 걸리게 된다. 

    그렇다면 이를 우회하는 방법을 찾아야할 것 같다.


    그 방법은 바로 와일드 카드 " * "이다!!

    와일드카드는 공동문자 또는 함께문자라고 부르는데

    " * " 이후 모든 글자를 포함하여 글자 수에 상관없이

    포함하기 때문에 이름을 굳이 일일이 칠 필요가 없다. 


    이 문제를 예시로 들자면 f * 를 하게 되면

    f로 시작하는 이름을 가진 모든 파일을 의미한다.

    ( ?는 *과 같은 의미이지만  글자 수 하나만을 의미한다. )


    또한 이 와일드카드를 이용하여 명령문을 실행 했을 때

    와일드카드 조건을 만족하는 파일들이 여러개라면

    그 파일들도 전부 명령이 실행된다. 

    < 예시 >


    위와 같은 원리를 이용하여 우리는 " cat f* "를 인자로

    넣어주게되면 flag에 대한 조건을 우회할 수가 있다!!


    또잉??~~?~?~?~?

    분명히 맞게 진행해보았는데 제대로 되지 않았다.

    그것은 바로 main함수에서 실행된 putenv( )함수였다.



    putenv함수에 있는 PATH의 역할은 선언된 경로안에서

     프로그램을 동작하게 해주는데 /thankyouverymuch 내부에

    cat과 flag가 없기 때문에 제대로 실행되지 않는 것이다.

    즉, 환경변수 PATH를 초기화 시켰다고 볼 수 있다.

    ( PATH에 /bin이 없어서 참조하지 못해 실행되지 않는 것이다) 



    그러므로 우리가 직접 절대경로를 입력해서

    실행하거나 환경변수 설정을 해주어야 한다.



    나는 전자를 택했다~ㅎ 

    이런식으로 FLAG를 볼 수 있었다.





    < 후자인 환경변수를 이용한 방법 >

    환경변수 PATH가 하는 일은 파일의 위치를 알려주는 역할을 한다.

    예를 들어 위에서 나왔듯이 cat이나 ls 등의 명령어는 모두

    bin 디렉토리에 존재하는데 환경변수 PATH에 /bin을 기록해놓으면

    사용자가 굳이 /bin/cat을 입력하지 않고 cat만 입력하더라도

     환경변수 PATH를 참조하여 명령어가 실행되는것이다. 

    참고 : htps://marcokhan.tistory.com/229



    < 번외 >

    이러한 느낌을 이용해서~


    이렇게도 우회할 수 있다고 한다


    '표튜터와 함께하는 Pwnable > Pwnable.kr Write-up' 카테고리의 다른 글

    Blukat Write-up  (0) 2019.04.15
    Black Jack Write-up  (0) 2019.04.15
    Cmd1 Write-up  (0) 2019.04.04
    Lotto Write-up  (0) 2019.04.03
    Leg Write-up  (0) 2019.04.02
    Shellshock Write-up  (0) 2019.04.01

    댓글 0

Designed by Tistory.