Dreamhack (16) 썸네일형 리스트형 [Dreamhack 문제 풀이 _ pathtraversal] 보호되어 있는 글입니다. [Dreamhack 문제 풀이 _blind-command] 해당 문제를 풀기 위해서, 서버 생성하기 버튼을 클릭하고 문제 파일을 다운로드하였습니다. 생성된 서버에 들어가 보니, 해당과 같은 화면이 나타난다는 사실을 알 수 있었습니다. 문제의 코드 파일을 다운 받아 살펴보니, cmd 인자에 [cmd] 값을 입력받는다는 사실과 request.method 가 get이 아니면 os.system()의 인자로 들어온 명령어를 실행한다는 사실을 알 수 있었습니다. 먼저, cat 명령어를 이용하여 ?cmd=cat flag.py를 보내면 어떤 값이 전달되는지 burp suite를 통해 확인해보도록 하겠습니다. 지난번과 같이, burp suite를 사용하기 위한 환경을 마련합니다. 해당 과정을 거친 뒤에, burp suite를 통하여 브라우저를 열고 우리가 생성했던 서버의 url.. [Dreamhack_문제 풀이 _Carve Party] 해당 문제를 풀기 위해서, 문제 파일을 다운로드하였습니다. 이전과는 다르게 서버 생성하기 버튼이 없기에 문제 파일을 통하여 필요한 사이트를 얻고자 합니다. 문제 파일을 다운로드한 후, 압축을 해제하니 해당 파일이 나타난다는 것을 확인할 수 있었습니다. 문제 파일에 들어가니 해당 서버가 나타난다는 것을 알 수 있습니다. 문제를 풀기 위해서, 아직은 단서를 모르기에 호박을 조금 클릭해 보는 것으로 시도하였습니다. 하지만 10000번을 클릭하는 것은 무리가 있으니, 문제를 풀기 위한 다른 단서를 찾아보았습니다. F12 키를 눌러 개발자 도구를 클릭하니, 우리가 호박을 클릭했을 때 실행되는 함수를 살펴볼 수 있습니다. 함수를 통해 선언된 count = 0이 '10000'이 될 때까지 1씩 count를 늘려가며 .. [Dreamhack_문제 풀이 _web-ssrf] 해당 문제를 풀기 위해서, 이전과 같이 서버 생성하기 버튼을 클릭해 주고 문제 파일을 다운로드합니다. 생성된 서버를 클릭하니 해당과 같은 화면이 나타나는 것을 볼 수 있었습니다. 문제에 접근하기 위해, 다운로드한 코드를 살펴보았습니다. 해당 문제는, 프락시(Proxy)를 사용하여 네트워크에서 통신하는 패킷을 가로채서 사용자가 원하는 분석 및 조작, 확인 등을 할 수 있게 도와주는 앱이 필요하므로 버프 스위트(Burp Suite)를 이용하여 문제를 풀었습니다. 버프 스위트(Burp Suite)의 실행 방법으로는, 첫 번째로 상단의 (Proxy)를 클릭하고 proxy settings을 다시 한번 클릭합니다. 클릭하여서 Enabled에 체크 표시를 해줍니다. Intercept is off를 Intercept .. [Dreamhack_web 문제 풀이 _file-download-1] 해당 문제를 풀기 위해서도, 이전과 같이 서버 생성하기 버튼을 클릭하고 문제 파일을 다운로드하여야 합니다. 생성된 서버에 들어가니 해당 화면을 볼 수 있었습니다. upload my memo를 클릭하니 해당 화면이 나타났습니다. 아직 잘은 모르지만, 임의로 upload를 해보았습니다. Filename에는 flag.txt를 입력하고 Content에는 1234를 입력 한 후, Upload를 해보았습니다. upload 후에 home 화면으로 돌아갔더니, upload한 목록이 나타난다는 것을 확인할 수 있었습니다. 다음으로는, 문제에서 다운 받은 코드를 살펴보았습니다. 코드를 통해 read 함수의 try 문에서 open 메소드 안에 " UPLOAD_DIR / filename "을 확인할 수 있었습니다. 임의로 만.. [Dreamhack_web 문제 풀이 _ image-storage] 해당 문제를 풀기 위해서도 마찬가지로 서버를 생성하고, 문제 파일을 다운로드하여야 한다. 생성된 서버를 클릭하면 해당과 같은 화면이 나타난다. 이제 다운로드한 코드 파일을 살펴보겠다. 총 3개의 (index, list, upload) 코드 파일이 있다는 것을 확인하였습니다. 첫 번째로 index.php 코드 파일입니다. 두 번째는 list.php 코드 파일이다. 세 번째로는 upload php 코드 파일입니다. 코드를 통해 파일 upload는 upload php에서 동작을 하는데, 이에 대한 필터링의 부분은 존재하지 않는다는 사실을 알 수 있습니다. 또한 파일을 업로드하면, list에서 업로드 한 파일을 볼 수 있다는 것을 알 수 있습니다. 더불어 list.php 코드를 살펴보면, 업로드 한 파일의 값도.. [Dreamhack_web 문제 풀이_command-injection-1] command-injection-1 문제를 풀기 위해서는, 이전과 같이 서버 생성하기 버튼을 클릭하고 문제 파일을 다운로드합니다. 생성된 서버에 들어가면 해당과 같은 화면이 나타납니다. 상단에 있는 ping 버튼을 클릭해 보았더니, 해당 화면이 나타난다는 것을 확인할 수 있었습니다. 그래서 해당 칸에 8.8.8.8을 입력해 보았더니, 해당과 같은 화면이 핑 결과로 나타났습니다. 이러한 결과를 통해 host에 입력한 ip로 ping 명령어를 실행한다는 것을 알 수 있었습니다. 위의 화면은 8.8.8.8로 ping 명령이 실행된 과정을 그대로 출력한 것입니다. 이러한 사실을 이용해서 우리가 얻고자 하는 flag를 얻을 수 있는 ping 명령을 입력하기 위해서는, 다운로드한 코드를 살펴보도록 하겠습니다. 코드.. [Dreamhack 문제 풀이] _ Mango 해당 문제를 풀기 위해서는 서버를 생성하고, 문제 파일을 다운로드하여야 합니다. 이번 문제에는, 1) 데이터베이스에 저장된 플래그를 획득하는 문제이며 2) 플래그는 admin 계정의 비밀번호이고 3) 플래그의 형식은 DH {…}라는 문제의 조건이 명시되어 있다는 사실을 알 수 있었습니다. 또한 {‘uid’: ‘admin’, ‘upw’: ‘DH {32 alphanumeric}’}라는 문제의 조건이 포함되어 있었습니다. 생성된 서버를 클릭해 보니 해당 화면이 나타나며, 문제 서버의 index은 /login?uid=guest&upw=guest이라는 문구를 출력하고 있다는 사실을 알 수 있었습니다. 해당 출력 값을 복사하여, 서버에 요청해 보니 guest 값이 출력되며 uid와 upw가 MongoDB에 들어가는.. 이전 1 2 다음