💬 문제 설명 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. ✨ 풀이 소스코드에서 /ping api 부분을 보면 cmd = f'ping -c 3 "{host}"'을 통해 사용자의 입력을 큰 따옴표로 감싸 커맨드를 만듦을 알 수 있다. 따라서 ping"; 다음 명령어의 형식을 입력으로 주면 핑을 보낸 후에 다음 명령어의 실행이 가능하다. 그런데 딱 봐도 세미콜론을 거르게 생겼다. 아니나 다를까 형식이 다르다고 한다. 소스코드에 패턴을 제한하는 부분이 있는줄 알고 엄청 찾았는데 찾지 못했다. 그래서 에러 문구를 검색해보니 Form 태그에 지정된 패턴과 맞지 않을 경우 이런 문구가 나타난다고 한다. 개발자 ..
CTF
💬 문제 설명 File Download 취약점이 존재하는 웹 서비스입니다. flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다. ✨ 풀이 File Download 취약점 웹 서버에 있는 파일을 다운로드 할 수 있는 경우에 다운로드 시에 파일 경로를 조작하여 내부 정보 다운로드 가능하게 하는 취약점 간단하게 파일 업로드 및 읽기가 가능한 사이트였다. 소스코드를 봤을 때 아래와 같이 ..의 입력을 막길래 다른 방법을 찾느라 헤맸다. if filename.find('..') != -1: return render_template('upload_result.html', data='bad characters,,') 그런데 다시 생각해보니 upload에만 해당 유효성을 확인하는 부분이 있고 read에는 그 ..
💬 문제 설명 개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아보세요. 플래그 형식은 DH{...} 입니다. ✨ 풀이 그냥 개발자 도구 써보라는거 같아서 소스코드 다운 받아서 모든 파일에 DH라고 검색했다. webpack의 scss 파일에서 플래그를 발견했다.
💬 문제 설명 쿠키로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. ✨ 풀이 소스 코드를 열어보니 로그인 정보로 보이는 json을 찾을 수 있었다. users = { 'guest': 'guest', 'admin': FLAG } 문제가 쿠키, 로그인 관련이므로 개발자 도구 > Application > Cookies를 열고 로그인을 시도했다. 그러자 다음과 같이 쿠키가 생긴 것을 확인할 수 있었다. 문제에서 admin 계정으로 로그인 하라고 했으니 쿠키를 조작해서 새로고침을 하니 다음과 같이 답이 나왔다.