보안 스터디

프롤로그 웹개발 하면서 가장 많이 애먹었던 것은 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) : 악의적..
프롤로그 고전 암호라서 딱히 어렵지는 않음. 근데 귀찮음. 그래도 기초는 이번을 마지막으로 끝날 듯 전치암호 전치 암호란 평문의 문자 위치를 서로 바꾸어 암호문을 만드는 기술. "대국민한 사만들람 이수할해 있다니습" 이렇게 작성한 걸 전치암호 이다. 암호 원리 각 기둥에 종이로 만든 띠를 감고, 기둥 면 방향으로 메시지를 적은 후 띠를 풀게 되면 종이에 적힌 문장은 알아보기 힘든 암호 문장이 됨. 전치 암호 종류 (1) 레일 펜스 암호(RAIL FENCE CIPHER) 평문의 문자를 비스듬하게 작성하고, 맨 위의 첫 번째 행부터 순서대로 취하여 암호문을 작성하는 방법 (2) 라우트 암호(ROUTE CIPHER) m x n 격자에 평문 글자를 기록하고 읽는 방법에 따라 글자를 취하여 암호문을 작성하는 방법..
프롤로그 아...여기 파트 그냥 노가다라 개귀찮다 카이사르 로마황제 율리우스 카이사르가 만든 암호문으로써, 모든 알파벳 문자를 일정한 크기만큼 이동시키고, 그 문자로 지환하여 만든다. A B B C C D D E 1칸씩 뒤로 밀려서 만들어진 것을 알 수 있다. A LOT OF THINGS OCCUR EACH DAY 위 규칙을 적용했을 때 해당 문장은 B MPU PG UIJOHT PDDVS FBDI EBZ 로 알아보기 힘든 문장이 되었다. 구현 A~Z까지를 0~25의 숫자로 맵핑한다. A->0, B->1, C->2... 여기서 내가 몇 칸 이동할 것인지를 변수 K 라고 두고, 현재의 문자 인덱스를 I라고 했을 때 인코딩 된 값은 (I+K) % 26이다. 카이사르 암호 도구를 구현하는 핵심은 카이사르 문자변..
문제 문제 코드 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..
프롤로그 이 글은 "화이트 해커를 위한 암호화 해킹" 을 이용하여 공부하는 걸 기록하기 위한 글이다. 주요 내용 I love you 라는 평문이 있을 때, a -> 2, b -> d 이런식으로 각 단어들을 다른 단어로 치환해서 새로운 암호문을 만드는 것을 가장 첫 번째 코드로 나온다. 첫 장이다 보니까 파이썬 기초문법들이 나오는데, 나는 이미 백준 골드3을 파이썬으로만 300문제 이상 풀었기에 기초 문법은 다 알고 있어서 그냥 한 번 슥 훑어보면서 넘어갔다. 그래서 여기 설명에도 안 적을 거다. 단문 암호화 복호화 하기 코드 def makeCodebook(): decbook = {"5":"a", "2":"b", "#":"d", "8":"e", "1":"f", "3":"g", "4":"h", "6":"i"..
문제 https://dreamhack.io/wargame/challenges/24/ simple_sqli 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference Server-side Basic dreamhack.io 문제코드 #!/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:..
프롤로그 제목에서부터 SQL Injection 나온다. 인터넷 뒤져봤는데, 각 고객 정보 유출....핸드폰번호 등의 고객정보 유출 등이 있을 때 SQL 인젝션 공격흔적이란 단어가 나온다. 사용자가 입력값에 필터링이 제대로 적용돼 있지 않을 때 발생한다고 되어 있는데, 공겨자가 조작된 SQL 질의문을 삽입해 웹 서버 DB정보를 열람하고 정보를 유출, 조작한다라고 되어 있다. 그러니까 SQL을 좀 알아야할 것 같다. 근데 내가 아는 건 Create table, update table 이거 딱 2개만 해봤는데 큰일났다. 서론 Injection(인젝션) : 주입, 이용자의 입력값이 어플리케이션의 처리과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 SQL Injection SQL : DBMS에 데이터를..
프롤로그 https://learn.dreamhack.io/169 로그인 | Dreamhack dreamhack.io 웹 개발을 실제로 해보면서 (물론 장고긴 하지만), 데이터베이스 구조화 부터 먼저 시켰다. 데이터베이스를 먼저 설정하지 않고 무지성으로 홈페이지 개발하다 보면, 필요한 거 추가하느라 모델(DB)를 수정시켰고, 이 수정 잘못 시키는 순간 엄청난 오류로 인해서 코드 다 갈아엎었던 기억이 난다. 이번에는 그 데이터베이스와 관련된 강의가 진행되는 것 같다. 데이터 베이스(Database) : 정보를 기록하기 위함 데이터베이스 관리 어플리케이션(DataBase Management System, DBMS) : 데이터베이스 관리 Database Management System 웹 서비스는 데이터베이스에..
성밍쟁
'보안 스터디' 카테고리의 글 목록 (3 Page)