ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - whatsdifferent
    카테고리 없음 2023. 11. 17. 22:58

    [Beginner - whatsdifferent - misc]

     

    ff파일과 fs파일의 다른점을 찾아서 수정한 부분을 DH{}에 넣으면 되는 문제다.

     

     

    시스템 해킹 문제 환경에 접속한다.

    바로 두 파일의 차이점을 출력해주는 명령어 diff를 사용해 입력해줬는데 What's different?라는 문자열만 나오고 바로 종료된다.(-d 옵션 안 주고 그냥 diff ff fs 해도 똑같음)

     

     

     

     

     

    무슨 파일이 출력되는 건지 궁금해서 문제 파일 다운로드 받고 chall.c를 열어보았다.

    코드 보고 계속 왜 저렇게 출력됐는지 깨달았다.

    일단 엔터 나오기 전까지 입력을 받고 그 값을 필터링 거쳐본 다음에 필터링에 걸리면 filtered 출력되고, 안 걸리면 snprintf()함수를 거치게 되는데 cmd가 출력이 저장되는 버퍼다. 그런데 > /dev/null 때문에 내가 치는 명령의 출력을 /dev/null로 리다이렉션하게 되고, 이는 모든 출력을 버리는 특수한 파일이다.

    즉, 결과를 버리고 나에게 출력을 보여주지 않기 위한 것이다.

     

    그래서 system(cmd)해봤자 결과를 다 버려서 난 아무것도 볼 수 없다.

    결론적으로 필터링에 안 결려도 뭘 입력하든 계속 out파일 내용만 보여주고 종료된다.

     

     

     

     

     

    다시 문제 환경으로 돌아가서 한번 테스트 삼아 What's different?가 들어있던 out파일의 내용을 hello로 변경했다.

    잘 출력된다.

     

     

     

     

     

    이제 diff ff fs > out를 입력하여 diff 명령어의 결과를 out파일에 저장한다.

    바로 out파일이 출력된다.

    출력 내용은 ff파일과 fs파일의 9번째 라인이 다르며, < 뒤에는 첫번째 파일에만 있는 내용, > 뒤에는 두번째 파일에만 있는 내용이 출력된다.

    ff파일을 수정하여 fs파일이 만들어졌으니까 > 뒤에 오는 전체 문자열을 DH{} 안에 넣으면 된다.

     

     

     

    플래그를 획득했다!

     

Designed by Tistory.