baby-linux

문제로 들어가보면 echo $(빈 칸…) 이렇게 echo 안에 무언가를 입력하면 그걸 서버에서 실행해준다.

그래서 저 안에다 cat *.txt를 넣으면 txt 형식의 파일을 출력해주기 때문에 flag가 어디 있는지 알려주는 텍스트 파일 하나가 출력된다.

Where is Flag? ./dream/hack/helloflask이렇게 나오는데, ./dream/hack/hello에 flag 파일이 있음을 알 수 있다. (경로는 helloflask가 아니라 hello이다)

그래서 적당히 cat ./dream/hack/hello/*.txt 하면 flag가 나온다.

쿠키 변조하는 기초 문제이다. 주어진 문제 사이트로 들어가서 일단 guest로 로그인을 한 뒤에, 개발자 도구 같은 거 들어가서 쿠키 값을 admin으로 변조하면 admin으로 로그인된 것으로 간주되어 flag가 뜬다.

devtools-sources

주어진 html 파일 소스에서 DH가 들어간 부분을 잘 검색해서 찾으면 된다.

file-download-1

주어진 app.py 파일과 웹사이트를 보면 알 수 있듯이 사용자로부터 제목과 내용을 입력받아 메모를 등록하고, 등록한 메모를 읽을 수 있게 해 주는데, 업로드 시에는 ..같은 걸 입력할 수 없게 잘 막아놨다.

그래서 이상한 내용을 업로드해서 뚫는건 안 되고, 읽을 때(/read) file download 취약점을 잘 이용하면 된다.

Postman 같은 걸로 주어진 서버에 적절한 파라미터를 달아 GET 메서드를 요청할 수 있는데, 서버 페이지의 /read 페이지에서 name 파라미터를 ../flag.py으로 지정하고 GET 요청을 보내면 된다. 즉 http://host3.dreamhack.games:{주어진 포트 번호}/read?name=../flag.py 이런 식으로…

64se64

주어진 html 소스를 보면 딱 봐도 base64로 인코딩된 것 같은 문자열이 나온다. 이걸 다시 디코딩해주면 된다.