Web/dreamhack(16)
-
[CTF] dreamhack - Carve Party
웹 서버에 접속해 보자문제 설명 그대로 호박을 10000번 클릭해야 하는 듯 하다 F12를 눌러 개발자 도구를 열어보자확인해 보니 counter 값이 0에서 시작하는데일정한 횟수 이상 넘어갈때마다 모양이 바뀌는 듯 하다 console창에서 counter의 값을 10000으로 바꾸어주었다. 하지만 flag는 나오지 않았으며, $('#jack-target').click() 함수 눈에 띄었다 이 함수가 클릭 함수라면 내가 직접 클릭하지 않고반복문으로 클릭시켜 flag값을 알 수 있다고 생각했다while(i값을 콘솔창에 입력하여9999까지 카운트하고한번 클릭하여 flag값 확인 DH{I_lik3_pumpk1n_pi3}
2024.05.25 -
[CTF] dreamhack - web-ssrf
웹 서버에 접속해 보자메인 페이지주어진 파일 다운/img_viewer 페이지 코드GET: img_viewer.html을 렌더링POST: 이용자가 입력한 url에 HTTP 요청을 보내고, 응답을 img_viewer.html의 인자로 하여 렌더링파이썬의 기본 모듈인 http를 이용하여 127.0.0.1의 임의 포트에 HTTP 서버를 실행http.server.HTTPServer의 두 번째 인자로 http.server.SimpleHttpRequestHandler를 전달하면,현재 디렉터리를 기준으로 URL이 가리키는 리소스를 반환하는 웹 서버가 생성된다 호스트가 127.0.0.1이므로 외부에서 이 서버에 직접 접근 X img_viewer 코드를 봤을 때이용자가 POST로 전달한 url에 HTTP 요청을 보내고, ..
2024.05.25 -
[CTF] dreamhack - file-download-1
웹 서버에 접속해 보자메인 페이지주어진 파일 다운 /upload 페이지 코드코드를 살펴보면, 파일 업로드를 처리하며 업로드된 파일을 서버에 저장하는 것을 알 수 있다.이 때, 업로드된 파일 이름에 ".."가 포함되어 있는지 검사하여 상위 디렉터리로 이동하는 시도를 방지한다 /read 페이지 코드코드를 살펴보면, 사용자가 요청한 파일을 열어서 그 내용을 읽고,이를 웹 페이지에 표시하는 것을 알 수 있다웹 페이지에 파일 내용을 표시할 때, upload 페이지 코드에서 ".."를 필터링 한 것과는 다르게다운로드 되는 파일에 대해 어떠한 검사도 하지 않으므로 파일 다운로드 공격에 취약 익스플로잇/upload 페이지에서 flag가 존재하는 ../flag.py 파일을 업로드하면아래 코드로 인해 필터링되어 파일 내용..
2024.05.25 -
[CTF] dreamhack - image-storage
웹 서버에 접속해 보자메인 페이지주어진 파일을 다운 index.php는 list.php와 upload.php로 이동하는 메뉴를 출력 list.php는 $directory의 파일들 중 ., .., index.html을 제외하고 나열 upload.php는 이용자가 업로드한 파일을 uploads폴더에 복사하며,이용자는 http://host1.dreamhack.games:[PORT]/uploads/[FILENAME] URL을 통해 접근할 수 있다 웹 셸을 업로드하고 방문하면, 서버의 셸을 획득할 수 있다php 웹 셸을 업로드 후/list.php 로 접속하면셸의 흭득한 것을 볼 수 있다 cat /flag.txt로 flag 확인flag 값 확인DH{c29f44ea17b29d8b76001f32e8997bab}
2024.05.25 -
[CTF] dreamhack - command-injection-1
웹 서버에 접속해 보자/ping 페이지 코드코드를 보면 host라는 이름의 폼 데이터를 가져온다가져온 host 값을 사용하여 ping 명령어를 실행subprocess.check_output 함수를 사용하여 /bin/sh에서 cmd 명령어를 실행하고,결과 출력을 변수 output에 저장한다 cmd 변수는 사용자로부터 입력받은 host 값을 포함하고 있는데사용자의 입력을 그대로 명령어로 실행하기 때문에,사용자가 악의적인 공격 코드를 주입할 수 있다 익스플로잇위 사진에서 명령어 구분자 ; 를 이용하여 익스플로잇을 시도했을 시형식에 대한 조건이 있음을 확인할 수 있다개발자 도구(F12)를 통해 input태그의 pattern속성이 설정되어있다.pattern 속성이란 폼 제출 시 요소의 값을 검사할 때 사용될 정..
2024.05.25 -
[CTF] dreamhack - Mango
웹 서버에 접속해 보자메인 페이지주어진 파일을 다운/login 페이지 요청 시 실행되는 코드이용자가 쿼리로 전달한 uid와 upw로 데이터베이스를 검색하고, 찾아낸 이용자의 정보를 반환한다위의 코드는 일부 문자열을 필터링하는 함수/login의 GET 핸들러를 살펴보면, 이용자의 요청에 포함된 쿼리를 filter함수로 필터링한다해당 함수는 admin, dh, admi라는 문자열이 있을 때 true를 반환위의 코드는이용자가 전달한 쿼리의 값과 타입을 반환하는 코드아래의 요청 결과를 보면, string외에 다양한 형태의 object도 쿼리로 전달될 수 있음을 알 수 있다위 코드는 로그인 페이지를 구성하는 코드인데코드에서 MongoDB에 쿼리를 전달하는 부분을 살펴보면, 쿼리 변수의 타입을 검사하지 않는다이로 ..
2024.05.25