Dreamhack baby-linux - write up

김선모·2023년 11월 21일

Dreamhack

목록 보기
2/5
post-thumbnail

리눅스 명령어가 돌아가는 웹 서비스에서 flat.txt 파일을 찾아 출력하는 문제이다.

서버에 들어갔더니 이런 화면이 나왔다. echo $ 옆에 있는 InputBox에 명령어를 입력하고 밑에 Submit 버튼을 누르면 Result 화면에 결과가 출력되는 것 같다.

ls를 입력하였더니 이런 결과가 나왔다. 디렉토리들은 dream, static, templates가 있고 파일들은 app.py, hint.txt, requirements.txt가 있다.

일단 app.py 파일이 어떤 식으로 되어있는지 보겠다.

11번째 줄을 보면 변수 cmd의 값은 위에서 봤던 InputBox에 입력한 텍스트인 것 같고, 13번째 줄을 보면 만약 InputBox에 입력한 텍스트중에 flag라는 내용이 포함되어 있으면 No!를 출력한다. 따라서 flag.txt 파일을 찾더라도 무작정 cat flag.txt를 입력하면 안 되는 것 같다.

문제의 요점을 알았으니 이제 다시 웹으로 돌아가, flag.txt가 어디있는지 살펴보았다. 하지만 디렉토리가 3개나 있기에 하나하나 다 찾아으면서 flag.txt가 어딨는지 알아내도 되지만 나는 hint.txt를 통해 flag.txt가 있는 디렉토리 경로를 알아냈다.

Where is Flag? ./dream/hack/hello라는 글이 적혀있다. flag.txt는 dream/hack/hello에 있는 것 같다. 그럼 cat dream/hack/hello/flag.txt를 입력해주었다.

역시, 값에 flag라는 내용이 들어가있어서 No!가 출력된다. 텍스트중 flag가 포함되면 안 된다는 사실은 알았지만 여기서 막혀버렸다..아스키를 써도 되나, 이진수로 해야되나 오만 이상한 생각이 다 들었다. 근데 생각보다 쉬웠다.

그냥 cat ./dream/hack/hello/* 을 입력하면 됐다. 위 코드의 뜻은 dream/hack/hello에 있는 모든 파일 내용을 출력해라 라는 뜻이다. 텍스트에 flag라는 내용이 포함되지도 않고, flag.txt는 hello 폴더 안에 있으니 No!가 출력되지 않고, hello 폴더 안에 있는 flag.txt의 값이 출력될거다.

flag값이 나왔고 복붙하여 제출했더니 정답이었다!

flag : DH{671ce26c70829e716fae26c7c71a33823feb479f2562891f64605bf68f60ae54}

profile
밑에 제 포트폴리오 사이트 들어갈 수 잇습니다

0개의 댓글