목록Hack/DreamHack(로드맵) (94)
CIDY

#!/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, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0.1"}) try: options = webdriver.ChromeOptions() for _ i..

*XSS 클라이언트 사이드 취약점 중 하나. 공격자가 웹 리소스에 악성 스크립트를 넣어 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있음. -> 이용자의 쿠키/세션 탈취 가능 -> SOP때문에 다른 오리진에서 데이터를 읽는 게 힘들어짐 -> 그래도 항상 우회법이 있더라 XSS공격은 이용자가 삽입 내용을 출력하는 부분에서 발생한다. (게시물이나 댓글, 로그인 시 출력문구 등) HTTP형식으로 웹 서버에 리소스 요청 후 서버로부터 받은 웹 리소스(HTML, CSS, JS 등)를 시작화하는 과정에서 변조된 페이지를 보거나, 스크립트가 실행될 수 있다. ->Stored XSS : 악성 스크립트가 서버에 저장/서버의 응답에 담겨옴 -> Reflected XSS : 악성 스크립트가 URL에 삽입/서버의 응답..

어떤 악의적인 페이지가 JS를 이용해 클라이언트의 SNS웹 서비스로 요청을 보냄 -> 브라우저는 요청 보낼 때 헤더에 해당 웹 서비스의 쿠키를 포함시킴 -> 악의적인 페이지는 로그인 된 이용자의 SNS응답을 받음 -> 해당 SNS페이지를 마음대로 할 수 있음 -> 그래서 나온 게 SOP(동일 출처 정책) *Same Origin Policy(SOP) 위에서 말했듯 악의적인 사이트가 특정 페이지에 HTTP요청을 보내고(이 때 헤더에 쿠키가 포함됨) -> HTTP응답 정보를 획득하는 코드를 실행할 수 있다. -> 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 할 필요가 있음 -> SOP 그럼 정보의 출처(Origin)를 어떻게 구분할까? -> 오리진은 프로토콜/포트/호스트로 구성 -> 세 요소가 모두 일..

#!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'admin': FLAG } @app.route('/') def index(): username = request.cookies.get('username', None) if username: return render_template('index.html', text=f'Hello {username}, {"fla..

#!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } # this is our session storage session_storage = { } @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: ..

쿠키와 세션은 클라이언트의 인증 정보를 포함하고 있는 친구들이다. 웹 서버는 수많은 클라이언트와 HTTP프로토콜을 이용해 통신하는데, 어느 계정으로 로그인하는지에 따라 상이한 서비스를 제공해야 한다. -> HTTP프로토콜로 웹 서버와 통신할 때 전송하는 헤더에 클라이언트의 정보/요청 내용을 구체화하는 데이터가 포함됨 -> 클라이언트의 인증 정보도 포함 *쿠키(Cookie) 클라이언트의 IP주소와 User-Agent는 고유하지 않은 정보 + HTTP 프로토콜의 Connectionless, Stateless특징 때문에 웹 서버는 클라이언트를 기억할 수 없음. Connectionless: 1요청 1응답 후 연결 종료. 새 요청이 들어올 때 마다 새로운 연결을 맺는다. Stateless: 통신이 끝난 후 상태 ..

접속해보면 이런 페이지를 볼 수 있다. 처음에는 플래그를 어떻게 구해야 할 지 막막헀는데, 수능볼때도 그랬지만 문제는 항상 잘 읽을 필요가 있다. 소스 탭에서 플래그를 "찾아" 보세요 -> 소스 어딘가에 플래그가 적혀있다. -> 검색

*개발자 도구 F12누르면 나오는 그거 명칭이 개발자 도구이다. 위쪽에 보면 기능 선택 패널이 있다. 요소 : 페이지 구성 HTML검사 콘솔 : 자바스크립트 실행 + 결과 확인 가능 소스 : HTML, CSS, JS등 페이지 구성 리소스 확인 + 디버깅 가능 네트워크 : 서버와 오가는 데이터 확인 가능 애플리케이션 : 쿠키 포함 웹 어플리케이션과 관련 데이터 확인 가능 패널에서 좀 더 오른쪽을 보면, VS에서 본 것 같은 오류 표시가 있다. -> 현재 페이지에서 발생한 에러 및 경고 메시지를 나타낸다. *요소 검사 패널 왼쪽 버튼은 요소 검사인데, 이를 이용해 특정 요소의 개략적인 정보 파악 및 관련 코드를 찾는 행위가 가능하다. 위 사진과 같이 요소 검사 버튼을 누른 뒤, 페이지상에 보이는 요소들에 커..