보안 스터디/웹 해킹

프롤로그 session-basic 이라는 문제가 있었는데, 이것은 그거와는 조금 다른 문제이다. 문제 https://dreamhack.io/wargame/challenges/266 session 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. Reference Background: Cookie & Session dreamhack.io 문제코드 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', '..
프롤로그 1주일간, 무선통신과 AES 암호학에 대해서 되게 심도있게 공부하고, 그것으로 발표자료를 준비하느라 좀 블로그에 신경을 못 썼다. 오늘 일단 발표자료는 다 완성이 되어서 이제 웹 해킹 마저 공부했던 거 계속 문제를 풀어보자. 문제 문제 코드 PHPreg Step 1 Step 2
문제 https://dreamhack.io/wargame/challenges/75 web-ssrf flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. 문제 수정 내역 2023.07.17 css, html 제공 Reference Server-side Basic dreamhack.io 문제코드 #!/usr/bin/python3 from flask import ( Flask, request, render_template ) import http.server import threading import requests import os, random, base64 from urllib.parse import url..
프롤로그 이건 또 뭘까..;; 서론 웹 개발 언어는 HTTP 요청을 전송하는 라이브러리를 제공한다. 파이썬같은 경우 urllib, requests 가 있다. 이 라이브러리는 HTTP 요청을 보낼 클라이언트 뿐만 아니라 서버와 서버간 통신을 위해 사용되기도 한다. 일반적으로 다른 웹 애플리케이션에 존재하는 리소스를 사용하기 위한 목적으로 통신한다. 기존에는 단일 서비스로 웹 서비스를 구현하였지만, 이제는 관리 및 코드의 복잡도를 낮추기 위해 마이크로서비스들로 웹 서비스를 구현하는 추세인데, 각 마이크로서비스는 주로 HTTP, GRPC 등을 사용해 API 통신을 한다. 서비스간 HTTP 통신이 이루어질때 요청 내에 이용자의 입력값이 포함될 수 있는데, 이용자의 입력값으로 포함되면 개발자가 의도하지 않은 요청..
문제 https://dreamhack.io/wargame/challenges/38 image-storage php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic dreamhack.io 문제코드 Image Storage Home List Upload Upload and Share Image ! Image Storage Home List Upload
프롤로그 아 개어려운데 풀 수 있을까? 문제 문제코드 #!/usr/bin/env python3 import os import shutil from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(__name__) UPLOAD_DIR = 'uploads' @APP.route('/') def index(): files = os.listdir(UPLOAD_DIR) return render_template('index.html', files=files) @APP.route('/upload', methods=['GET', 'POST']) def upload_memo(): if request.method ..
프롤로그 웹개발 하면서 가장 많이 애먹었던 것은 CORS 부분이랑 여기 파일 올릴때 보안 정책이었다. 그것에 대해 배우는 것 같아서 이제 웹개발할때 조금 더 편하지 않을까 싶다. 서론 파일 공유 서비스를 개발할때, 이용자가 업로드한 파일을 데이터베이스에 저장하는 것보다는 서버의 파일 시스템에 저장하는 것이 개발하기 쉽고, 관리 효율도 높으나 임의 파일이 다운로드 되는 취약점이나, 악성 웹셸 파일을 업로드 하여 임의 코드를 실행할 수 있는 취약점이 발생되기도 한다. 파일 업로드와 관련해서 발생하는 취약점은 파일 업로드 취약점(File Upload Vulnerability)이다. 파일 시스템상 임의 경로에 원하는 파일을 업로드 하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생한다. 원하는 시스템 ..
문제 https://dreamhack.io/wargame/challenges/44 command-injection-1 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. Reference Introduction of Webhacking dreamhack.io 문제코드 #!/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_templ..
프롤로그 웹 해킹 강의 현재 75퍼까지 진행되었다. 얼마 남지 않았는데 최대한 빨리 끝내고 웹해킹쪽은 워게임 문제풀이 많이 해봐야겠다. 서론 어떤 기능에 대해서 새로 코드를 짜는 것 보단 이미 있는 내장 명령어를 쓰는 경우가 많다.(ls, who...) 다양한 웹 어플리케이션 제작용 언어는 시스템에 내장되어 있는 프로그램들을 호출 할 수 있는 함수를 지원한다. 이 시스템 함수를 사용하면 이미 설치된 소프트웨어들을 쉽게 이용할 수 있다는 장점이 있으나, 함수의 인자를 셸의 명령어로 전달한다는 점에서 치명적인 취약점이 이어지기도 한다. -> 이를 Command Injection(명령어를 실행해 주는 함수를 잘못사용하여 발생) 이라고 한다. Command Injection 인젝션(Injection) : 악의적..
문제 문제 코드 const express = require('express'); const app = express(); const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/main', { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; // flag is in db, {'uid': 'admin', 'upw': 'DH{32alphanumeric}'} const BAN = ['admin', 'dh', 'admi']; filter = function(data){ const dump = JSON.stringify(data).t..
NoSQL Injection 이전의 SQL Injection과 공격 목적 및 방법이 매우 유사하다. 두 공격 모두 이용자의 입력값이 쿼리에 포함되면서 발생하는 문제점으로써, 이용자의 입력값에 대한 타입 검증이 불충분할 때 발생한다. No SQL중 하나인 MongoDB는 정수, 날짜, 실수 이외에도 오브젝트, 배열 타입을 사용할 수 있는데 오브젝트 타입의 입력값을 처리할 때 쿼리 연산자를 사용할 때 다양한 행위를 할 수 있다. https://docs.mongodb.com/manual/reference/operator/query/type/ $type — MongoDB Manual Docs Home → MongoDB Manual $type$type selects documents where the value ..
프롤로그 simple_sqli 워게임 문제에서 Bilnd SQL Inejction 해볼려고 했는데 안 됐다; 자꾸 requests 모델이 없다는데 파이썬 새 버전 설치에 별 거 다해봤는데 안 돼서 그냥 비관계형 DBMS 로 넘어왔다. NRDMBS(NoSQL) RDBMS의 단점은 저장해야하는 데이터가 많아지면 용량의 한계에 다다를 수 있는 것인데, 이를 해결하기 위해서 나왔다. RDBMS는 SQL를 사용해 데이터를 조회 및 추가 그리고 삭제할 수 있었는데, NoSQL은 SQL를 사용하지 않고 복잡하지 않은 데이터를 저장해 단순 검색 및 추가 검색 작업을 위해 매우 최적화된 저장 공간이 큰 특징이고 관계형과의 차이점이 있다. 관계형은 SQL이라는 정해진 문법으로 데이터를 저장하기에 SQL이 필수인데, NoS..
성밍쟁
'보안 스터디/웹 해킹' 카테고리의 글 목록