[Dreamhack Web - Lv 1] proxy-1
Wargame/Dreamhack 2021. 10. 25. 14:28

문제 정보 Raw Socket Sender가 구현된 서비스입니다. 요구하는 조건을 맞춰 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 풀이 힌트 1. 소스코드 분석 2. HTTP Packet 3. Proxy Tool 문제 풀이 더보기 더보기 문제의 설명에 요구 조건을 맞추라는 말이 있는데, 이게 어떤 걸을 말하는지 잘 모르겠다. 그래서 일단 기능을 보고 추측을 해보겠다. 해당 문제의 기능은 Raw Socket Sender 기능이 있다. 메뉴바의 Socket도 Raw Socket Sender와 같은 것이다. 해당 페이지는 위 사진과 같다. 여기까지 살펴본 결과 아마 해더와 관련이 있지 않을까? 라는 생각이 들었다. 그 이유는 host, port, data이 세 개를 던져주고 요..

[Dreamhack Web - Lv 1] file-download-1
Wargame/Dreamhack 2021. 10. 25. 14:18

문제 정보 File Download 취약점이 존재하는 웹 서비스입니다. flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다. 풀이 힌트 1. 공격 백터 파악 2. Path Traversal Attack 문제 풀이 더보기 더보기 들어가보니, 기능이 Upload My Memo라는 Upload 기능일 거 같은 메뉴가 하나있었다. 해당 페이지의 공격 백터는 filename과 content이다. 일단 업로드를 하면 어떻게 작동하는지 확인을 해보도록 하겠다. 업로드를 한 결과 Home 페이지에 내가 filename에 넣은 값이 리스트로 들어가 있었다. 들어가보니, Get 메소드로 name을 넘겨주는 것을 확인하였다. 이 또한 사용자가 값을 입력할 수 있으니, 공격 백터에 추가하겠다. 내가 테스트로 넣은 값..

[Dreamhack Web - Lv 1] xss-1
Wargame/Dreamhack 2021. 10. 23. 13:49

문제 정보 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 풀이 힌트 1. 공격 백터 파악 2. XSS 기본 지식 문제 풀이 더보기 더보기 문제에 접속하니, 여러 개의 페이지가 나왔고 하나하나 들어가서 공격 백터를 찾아보겠다. 1. vuln(xss) page 해당 페이지에 들어가 보니, vuln?param=으로 열렸다. param에 들어간 값이 페이지에 그대로 적용이 돼서 Alert가 떴다. 값을 수정해서 서버에 보내니, 수정된 값도 적용이 됐다. 2. memo 페이지에 들어가니, memo?memo=hello로 열렸다. 그리고 회색 박스 안에 hello가 적힌 페이지가 출력되었다. 아마도 ..

[Dreamhack Web - Lv 1] welcome
Wargame/Dreamhack 2021. 10. 15. 18:34

문제 정보 이 문제는 서버에서 작동하고 있는 서비스(welcome)의 바이너리와 소스 코드가 주어집니다. "접속 정보 보기"를 눌러 서비스 정보를 얻은 후 플래그를 획득하세요. 서버로부터 얻은 플래그의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. 풀이 힌트 Netcat 사용 문제 풀이 더보기 네트워크 툴을 이용하여 서버에 요청을 하면, Flag를 반환하는 문제인 것으로 보인다. Netcat을 설치하여, 문제 서버에 접속하니, 바로 Flag를 보내줬다.

[Dreamhack Web - Lv 1] simple_sqli
Wargame/Dreamhack 2021. 10. 15. 16:35

문제 정보 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 풀이 힌트 1. 공격 백터 파악 2. DBMS 파악 3. SQLi 이해 문제 풀이 더보기 Home, Abuot, Contact 메뉴는 아무 작동도 안한다. Login에 들어가니, 로그인 페이지가 나왔다. 아마 로그인 기능에서 SQLi를 시도하라는 것으로 보인다. 나는 일단 guest/guest로 로그인을 시도하였다. 그 결과 guest로 로그인이 성공하였다. 그럼 admin으로 로그인을 하는게 인지상정인데, admin으로 SQLi하기 전에 어떤 DB을 쓰는지 또 쿼리문이 어떻게 생겼는지 추측을 해야한다. 어떤 DB를 쓰는지에 대한 추측은 이번 문제에선 추측을 ..

[Dreamhack Web - Lv.1] pathtraversal
Wargame/Dreamhack 2021. 10. 14. 20:42

문제 정보 사용자의 정보를 조회하는 API 서버입니다. Path Traversal 취약점을 이용해 /api/flag에 있는 플래그를 획득하세요! 풀이 힌트 1. 공격 백터 파악 2. Path traversal 공격 문제 풀이 더보기 더보기 문제 페이지에 들어가니 무슨 기능을 하는 페이지인지 모르겠다. Home, About, Contact 메뉴를 클릭하니, 아무 반응이 없었다. Get User Info을 클릭하니 위 사진과 같은 페이지로 이동하였다. 어떤 기능을 하는지 확인하기 위해서 View 버튼을 클릭하니 guest 계정의 정보가 나왔다. 코드를 확인해보니, userid에 넣은 값이 users에 있는 값으로 변경되어 서버에 넘어간다. 그래서 버튼을 누르면 잠깐 guest에서 0으로 변경되었는데, 값이 ..

[Dreamhack Web - Lv 1] cookie
Wargame/Dreamhack 2021. 10. 14. 20:25

문제 정보 쿠키로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 풀이 힌트 브라우저 쿠키 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각임. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송함. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용함. 이를 이용하면 사용자의 로그인 상태를 유지할 수 있음. 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억시켜주기 때문임. 문제 풀이 더보기 문제 페이지에 접속하니, 엄청 간단한 페이지가 나왔다. Home, About 메뉴을 클릭해봤지만 아무 반응이 없었다. Login을 클릭하니, ..

[pytest] 03. pytest201
Development/내용 정리 2021. 10. 6. 23:44

개요 pytest101을 이어서 pytest201 강의를 정리하도록 하겠다. pytest101에서 사용한 코드를 계속 사용할 예정이라서 pytest101를 보고 오면 좋을 거 같다. 다수의 케이스에 대한 테스트 from calculator import Calculator calculator = Calculator() def test_add(): for i in range(10): assert calculator.add(i, 2) == i + 2 이렇게 인자가 적고 테스트할 경우가 확실한 경우 반복문으로 테스트를 할 수 있다. 하지만 인자가 많고 테스트할 경우가 많으면 어떻게 해야할까? 방법은 pytest.mark.parametrize이라는 데코레이터를 이용하여 테스트 코드에 파라미터 다수의 인자를 전달할..

[pytest] 02. pytest101
Development/내용 정리 2021. 10. 6. 11:56

개요 저번 글인 [pytest] 01. 시작하기의 글은 pytest를 어떻게 사용하는 지에 대한 내용을 정리하였다. 이번 글은 Matt Layman님이 2019년 3월에 진행된 Python Frederick event에서 발표한 Python Testing 101 with pytest의 내용을 정리한 글이다. pytest의 공식 문서를 좀 읽어 본 결과 너무 많고, 자세하게 나와 있어서 정리도 힘들고 이해가 잘 안 갔다. 그래서 간략하게 쉽게 강의한 내용을 정리하겠다. 끔찍한 계산기 테스트 만들기 끔찍한 계산기에 대한 테스트를 작성하기 전에 테스트에 대해서 알아야 한다. 테스트는 특정 동작의 결과를 살펴보고 결과가 예상한 것과 일치하는지 확인하기 위한 것. 여기서 특정 동작은 일부 시스템이 특정 상황 또는..

[pytest] 01. 시작하기
Development/내용 정리 2021. 10. 4. 22:04

개요 pytest은 작고 읽기 쉬운 테스트를 작성할 수 있도록 지원하는 프레임워크 애플리케이션 및 라이브러리에 대한 복잡한 기능도 테스트를 지원하도록 확장할 수 있다. 나는 라이브러리를 제작하고 있는데, 라이브러리의 기능을 테스트를 해야해서 pytest을 이용하여 테스트를 진행하고자 한다. 이를 위해 pytest 공식 문서의 내용을 정리하여 블로그에 작성하였다. 환경 구성 python 버전 : 3.9.7 pytest 버전 : 6.2.5 환경 구성 $ mkdir pytestStudy $ cd pytestStudy $ python3 -m pip install pytest 나는 pytestStudy 디렉터리 안에서 pytest를 연습을 할 거라서 따로 디렉터리를 생성하였다. $ pytest --version ..