[dreamhack] csrf-2 문제풀이
2021. 8. 30. 22:54
워게임/dreamhack
[WEB] csrf-2 문제풀이 문제를 확인해보자. URL 입력을 조작하여 CSRF를 이요한 플래그 획득 문제이다. 접속해보자. 세 개의 페이지가 확인된다. 1. vuln 페이지 2. flag 페이지 3. login 페이지 소스코드를 확인해보자. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() excep..
[dreamhack] xss-2 문제풀이
2021. 8. 30. 22:24
워게임/dreamhack
[WEB] xss-2 문제풀이 문제를 확인해보자. URL을 입력하여 XSS 취약점을 발현시키고 플래그를 획득하는 문제이다. 접속해보자. 총 세개의 페이지가 있다. 1. vuln(xss) 2. memo 3. flag 소스코드를 확인해보자. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url..
[dreamhack] SuperSecure OTP 문제풀이 - 진행중
2021. 7. 30. 22:43
워게임/dreamhack
[WEB] SuperSecure OTP 문제풀이 문제를 확인해보자. OTP가 구현된 서비스에서 FLAG를 획득하는 문제이다. 접속해보자. admin/admin, guest/guest 로 접속이 당연히 안된다. 별걸 기대하자. guest/guest를 입력하고 회원가입 버튼을 클릭하자. 로그인하면 요런 페이지가 나온다. 가입자 목록 보기 페이지에 접근해보자. 가입자 목록을 보려면 OTP 인증 값이 필요하다고 한다. OTP 관리 페이지에 접속해보자. 필자는 한탄스럽게도 아이폰 유저이므로 앱스토어에서 Google Authenticator 앱을 설치해서 QR 코드 스캔을 통해 OTP를 생성해보자. QR 코드를 스캔하면 위와 같이 guest 계정에 OTP 인증코드가 생성된다. OTP 코드로 실제로 인증이 수행되는지..
[dreamhack] weblog-1 문제풀이
2021. 7. 22. 23:00
워게임/dreamhack
[WEB] weblog-1 문제풀이 문제를 확인해보자. 주어진 코드와 로그를 분석해서 주어진 질문의 답을 찾으라고 한다. 일단 파일부터 다운로드 받아보자. 웹 서버의 Access log와 php로 작성된 소스코드 파일을 확인할 수 있다. 문제에 접속해보자. Access log를 확인해보자. 상당히 눈이 아프기 때문에 엑셀 데이터 나누기 기능을 이용하여 보기 좋게 정리해보자. 공백으로 구분하고 로그 분석에 불필요해 보이는 셀들은 숨겨주자. admin 계정의 pw가 탈취된 것을 찾아보자. board.php에서 sort 파라미터에 sql 쿼리를 삽입하여 (username+0x3a+password) 문자열을 한글자씩 맞춰보고 있다. 보다보니 쿼리의 결과가 참일 때 응답 패킷의 길이가 1192이고 거짓일 때 응답..
[dreamhack] blind-command 문제풀이
2021. 7. 21. 23:10
워게임/dreamhack
[WEB] blind-command 문제풀이 Blind Command Injection은 사용자의 입력이 시스템 명령에 사용될 수 있는 공격인 OS Command Injection의 한 종류로 시스템 명령의 수행 결과 값을 알 수 없을 때 사용하는 방법이다. 문제를 확인해보자. Read the flag file XD? 무슨 말 하는거야 한글로 해ㅡㅡ 일단 접속해보자. 오 커맨드 인젝션 문제인가보다. 진행시켜. 어라 그대로 뱉어내네. echo인건가..... 모르겠으니 일단 소스코드를 확인해보자. #!/usr/bin/env python3 from flask import Flask, request import os app = Flask(__name__) @app.route('/' , methods=['GET'..
[dreamhack] web-ssrf 문제풀이
2021. 7. 21. 22:05
워게임/dreamhack
[WEB] web-ssrf 문제풀이 SSRF(Server Side Request Forgery)는 CSRF와 다르게 클라이언트 측의 요청을 변조시키는 것이 아닌 서버 측 자체의 요청을 변조하여 공격자가 원하는 형태의 악성 행위를 서버에 던져주면 서버가 검증 없이 그대로 받아 그에 따른 행위/응답을 해주는 공격을 말한다. 이 공격은 주로 사용자 입력을 받아 서버가 직접 다른 웹이나 포트에 접근해서 데이터를 가져오는 기능에서 발생하며, 외부가 아닌 내부에서 공격을 수행하게 되므로 접근제어 정책을 우회할 수 있는 공격이다. 문제를 확인해보자. Flask로 작성된 Image Viewer 서비스에서 SSRF 취약점을 이용해 /app/flag.txt에 위치한 플래그를 획득하는 문제이다. 접속해보자. Image Vi..
[dreamhack] web-deserialize-python 문제풀이
2021. 7. 7. 00:25
워게임/dreamhack
[WEB] web-deserialize-python 문제풀이 직렬화(Serialize)는 언어 문맥에서 구조나 상태를 다른 컴퓨터 환경에 저장하고 나중에 다시 사용할 수 있는 포맷으로 변환하는 과정이다. 웹 상에서 직렬화는 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 한다. 주로 객체를 파일로 저장하거나 다른 곳으로 전송할 때 사용된다. 반대로 역직렬화(Deserialize)는 직렬화된 데이터를 역으로 직렬화하여 다시 객체의 형태로 복원하는 것을 말한다. 역직렬화(Deserialization) 취약점이란 위에서 설명한 직렬화-역직렬화 과정에서 악의적으로 객체 또는 변수를 추가 작성하여 악성코드를 싱행하게끔 만드는 취약점이다. pickle 모듈은 python의 객체구조 ..
[dreamhack] funjs 문제풀이
2021. 7. 6. 01:13
워게임/dreamhack
[WEB] funjs 문제풀이 자바스크립트(Javascript)는 아주 강력한 프로그래밍 언어이다. HTML은 웹페이지의 큰 뼈대를 제공하고, CSS는 색깔이나 글씨체, 모양과 같은 디자인적인 요소를 관리하며, 자바스크립트는 웹 페이지의 동작을 담당한다. 즉, 자바스크립트는 동적으로 콘텐츠를 바꾸고, 멀티미디어나 움직이는 이미지 등 웹페이지를 꾸며주도록 도와준다. 크롬 개발자 도구(DevTools)는 크롬 브라우저에 내장된 개발 관련 도구입니다. 웹 어플리케이션을 개발하고 수정/최적화하는데 필요한 다양한 기능을 제공한다다. 자바스크립트 디버깅뿐 아니라 모바일 기기 시뮬레이터, 네트워크 분석, 최적화에 대해 검사도 해줍니다. 전체 기능은 공식 홈페이지에서 확인할 수 있다. 디버깅에는 주로 Elements,..
[dreamhack] file-csp-1 문제풀이
2021. 7. 2. 02:03
워게임/dreamhack
[WEB] file-csp-1 문제풀이 CSP(Content Security Policy)는 다양한 웹 보안 정책 중 하나다. 주로 XSS나 Data Injection, Click Jacking 등 웹 페이지에 악성 스크립트를 삽입하는 공격 기법들을 막기 위해 사용된다. 주로 헤더에 내용이 삽입되며 특정 리소스가 어디서 왔는지 검사를 하고 허용된 범위에 포함됐는지 검토한다. 문제를 확인해보자. /test 페이지에 접근하니 Test 버튼이 눈에 띈다. 예시로 써있는 저 구문을 입력해서 버튼을 눌러보자. 이런 결과가 출력된다. 무슨 말인지 모르겠으므로 코드를 봐보자. #!/usr/bin/env python3 import os import shutil from time import sleep from urll..