본문 바로가기

전체 글

(156)
[Dreamhack] XSS-2 write up - 티스토리 #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service 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..
[Dreamhack] XSS-1 write up - 티스토리 #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service 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..
[Network] Mitigation: Same Orgin Policy - 티스토리 SOP(Same Origin Policy) SOP는 동일 출처 정책이란 뜻으로, XSS와 같은 클라이언트 사이드 공격이 발생하는 것을 방지하기 위한 정책이다. 만약 사용자가 악의적인 웹 페이지에 접근 했을 때 해당 페이지가 이용자의 SNS로 웹 서비스 요청을 보낸다면, 사용자의 쿠키 값을 그대로 악용이 가능하다. SOP 정책이 있다면 악의적인 웹 페이지가 그러한 요청을 보내더라도 응답을 받을 수 없게 된다. 따라서 클라이언트 사이드 공격은 SOP를 우회하기 위함이라고도 한다. SOP의 동일 출처 구분 SOP는 브라우저가 가져온 오리진을 다음과 같은 기준으로 구분한다. 1. 프로토콜 2. 포트 3. 호스트 https://same-orgin.com/ 이라는 오리진들을 아래의 오리진들과 비교했을 때 결과는 다..
[Dreamhack] session-basic write - 티스토리 #!/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: ..
[Dreamhack] Cookie write up - 티스토리 #!/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..
[Network] Cookie / Session이란 무엇인가? - 티스토리 Cookie란? 네트워크에서 쿠키란 서버가 클라이언트의 정보를 기억하기 위해 사용한다. (웹 서버는 HTTP의 Connectionless와 Stateless의 특성 때문에 클라이언트 정보를 기억할 수 없다.) Connectionless: 하나의 요청에 대해 하나의 응답을 한 후 연결을 종료함. (새 요청이 있을 때마다 새로운 연결을 생성함) Stateless: 통신이 끝난 후 상태 정보를 저장하지 않는다. 쿠키는 다음과 같은 세 가지 목적을 가지고 있다. 1. 사용자 세션 - 특정 사용자의 세션과 연결 시킨다. 2. 개인화 - 사용자에게 맞는 적절한 페이지를 보여준다. 3. 추적 - 사용자의 웹 사이트 방문 기록을 추적하여 기록한다. 클라이언트가 서버에 요청을 보내면 서버는 쿠키를 발급한 후 응답에 같이..
[Network] HTTP / HTTPS란 무엇인가? - 티스토리 HTTP란? HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고 받을 때 사용하는 네트워크 통신 규약 중 하나이다. HTTP는 서버와 클라이언트의 데이터 교환을 요청과 응답으로 정의한다. 요청과 응답 HTTP로 요청 시 응답 또한 HTTP로 온다. 아래는 두 가지 경우의 HTTP 메세지 형식이다. 1. 요청 위 사진은 요청에 대한 HTTP 메시지의 헤더 부분이다. 각각의 네모 박스는 다음과 같은 의미를 나타낸다. 빨간색: Start Line, 요청의 상태를 나타냄 주황색: HTTP 메시지와 바디의 정보를 나타냄 초록색: 헤더와 바디를 구분 짓는 역할을 함 (\r: carraige return, \n: line feed) (GET 요청이므로 HTTP Body 부분은 없는..
[Dreamhack] basic_heap_overflow write up - 티스토리 문제 코드 #include #include #include #include #include struct over { void (*table)(); }; void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } void table_func() { printf("overwrite_me!"); } int main() { char *ptr = malloc(0x20); st..