본문 바로가기

분류 전체보기

(156)
[Draemhack] image-storage write up - 티스토리 Image Storage Home List Upload 파일 업로드 위 코드는 파일 저장 서비스에 대한 코드이며 파일 확장자에 대한 필터링이 없으므로 웹쉘과 같은 악성 파일을 업로드 할 수가 있다. .php 파일이 업로드 된 것을 볼 수 있다. 해당 경로에 접근하여 쉘을 실행시켜 flag를 얻을 수 있다.
[Dreamhack] command-injection write up - 티스토리 #!/usr/bin/env python3 import subprocess from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(__name__) @APP.route('/') def index(): return render_template('index.html') @APP.route('/ping', methods=['GET', 'POST']) def ping(): if request.method == 'POST': host = request.form.get('host') cmd = f'ping -c 3 "{host}"' try: output = subprocess.check_output(['/..
[Dreamhack] simple_sqli write up - 티스토리 #!/usr/bin/python3 from flask import Flask, request, render_template, g import sqlite3 import os import binascii app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' DATABASE = "database.db" if os.path.exists(DATABASE) == False: db = sqlite3.connect(DATABASE) db.execute('create table users(userid char(100), userpassword char..
[Network] TCP/IP 4계층이란? / TCP 연결 TCP/IP 4계층과 OSI 7계층의 차이점은 TCP/IP는 좀 더 실무적인 개념들로 간랸화 되어 있으며, OSI 7계층은 네트워크 통신에 필요한 모든 개념들이 계층별로 들어가 있는 느낌이다. 따라서 실제로는 TCP/IP 4계층을 모델로 네트워크 통신을 표현한다. TCP/IP 4계층 TCP/IP 4계층은 다음과 같은 계층들로 이루어져 있다. 1. 네트워크 엑세스 계층 2. 인터넷 계층 3. 전송 계층 4. 응용 계층 네트워크를 통해 데이터를 송수신하게 되면 각 계층을 위에서 아래로 또는 아래에서 위로 지나야만 송수신이 가능하다. 각 계층을 지날때마다 계층별 헤더(계층별로 필요한 정보)가 데이터에 추가 되며, 이를 캡슐화라고 부른다. 또한, 수신된 데이터를 확인하기 위해 계층별 헤더를 확인하고 알맞은 행동..
[Network] OSI 7계층이란? OSI 7계층 OSI 7계층은 네트워크 통신에서 일어나는 과정을 7개로 나눈 것으로 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델이다. 먼저, 7개의 과정으로 나누는 것은 분할정복으로 이해할 수 있다. 분할정복은 큰 문제를 작은 문제로 나누어 해결하면 큰 문제를 쉽게 해결 할 수 있는 것을 뜻한다. 각각의 과정을 나누어 이해하면 네트워크 통신에서 문제가 발생 시 각 계층 별 특징 확인을 통해 쉽게 해결할 수 있다. OSI 7계층은 다음과 같은 7가지 단계로 이루어져 있다. 1. 물리 계층 2. 데이터 링크 계층 3. 네트워크 계층 4. 전송 계층 5. 세션 계층 6. 표현 계층 7. 응용 계층 1. 물리 계층 (Physical Layer) 1계층은 다른 시스템에 기계어를 전기적 신호로 전송하거..
[Dreamhack] csrf-2 write up - 티스토리 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for 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**]" users = { 'guest': 'guest', 'admin': FLAG } session_storage =..
[Dreamhack] csrf-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..
[Web] CSRF란 무엇인가? CSRF (Cross-Site Request Forgery) csrf는 클라이언트 사이드 취약점으로 교차 사이트 요청 위조 라고 부른다. 즉, 임의 이용자의 권한으로 HTTP 요청을 보내는 것을 말한다. CSRF 동작 HTML태그와 JavaScript 코드를 이용할 수 있다. 1. HTML 태그 👆 img태그를 이용할 수 있다. img태그는 이미지 url에 있는 이미지를 불러오는 태그이므로 이미지를 불러오기 위해선 해당 url에 get 요청을 보내게 된다. 즉, HTTP 요청을 보낼 수 있다. 2. JavaScript window.open("https://example.com/money?send=1000000"); 👆 새 창을 여는 코드나 locatioj.href 등과 같은 코드를 이용하면 원하는 url..