프롤로그 고전 암호라서 딱히 어렵지는 않음. 근데 귀찮음. 그래도 기초는 이번을 마지막으로 끝날 듯 전치암호 전치 암호란 평문의 문자 위치를 서로 바꾸어 암호문을 만드는 기술. "대국민한 사만들람 이수할해 있다니습" 이렇게 작성한 걸 전치암호 이다. 암호 원리 각 기둥에 종이로 만든 띠를 감고, 기둥 면 방향으로 메시지를 적은 후 띠를 풀게 되면 종이에 적힌 문장은 알아보기 힘든 암호 문장이 됨. 전치 암호 종류 (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이다. 카이사르 암호 도구를 구현하는 핵심은 카이사르 문자변..
프롤로그 매트랩에서 C언어에서 작성된 함수를 불러와서 사용해야하는 일을 알아보기 위해 이것저것 찾아보았다. 찾은 방법은 총 2가지이며 MEX와 DLL 방법 두 가지이다. MEX는 MATLAB에서 빠르고 편리하게 사용할 수 있는 방면에 MATLAB API 를 사용하기 때문에 C언어에서 조금씩 변형된 함수들로 작성해야하고 DLL은 그냥 복잡했다. MEX (MATLAB Executable) MEX는 MATLAB에서 C, C++ 또는 Fortran 으로 작성된 프로그램을 실행할 수 있게 하는 기능으로, 이를 통해 MATLAB의 고수준 언어 기능과 C/C++ 또는 Fortran 의 저수준 언어 성능을 결합할 수 있다. MEX 파일은 MATLAB 함수처럼 동작하며, MATLAB 데이터 타입과 직접적으로 상호작용할 ..
문제 문제 코드 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..
프롤로그 이 카테고리는 이것이 MySQL 이다를 보며 데이터베이스 보안을 위해 데이터베이스를 공부하는 공간이다. MySQL 설치하기 https://dev.mysql.com/downloads/installer/ MySQL :: Download MySQL Installer Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8.1, use a MySQL product's MSI or Zip archive for installation. MySQL Server 8.1 and higher also bundle MySQL Configurator, a tool that helps configure MySQL Server. dev.mysql.c..
프롤로그 무선통신 스터디를 진행하는데, 매트랩을 이용하여 음성, 영상, 텍스트 파일 불러오고 변화된 후 파일 저장하는 방법을 알아낸 것을 정리하였다. 음성 파일 불러오기 & 저장하기 [y, Fs] = audioread("./testvoice.m4a"); %파일 불러오기 y_modified = y * 0.1; % 볼륨 10% 로 감소 audiowrite('modifiedvoice.m4a', y_modified, Fs); %파일 저장하기 처음에 위와 같이 testvoice.m4a 파일 하나만 존재하였는데 해당 코드를 실행하게 되면 새로운 음성 파일이 저장이 된 것을 확인 할 수 있다. 이때 [y, Fs] 로 불러오는데, y는 오디오 데이터, Fs 는 샘플링 레이트를 나타낸다. 샘플링 레이트란 초당 샘플 수를..
프롤로그 이 카테고리는 이것이 MySQL 이다를 보며 데이터베이스 보안을 위해 데이터베이스를 공부하는 공간이다. 데이터베이스 정의 데이터베이스 : 데이터의 집합 DBMS : 데이터베이스를 관리, 운영하는 역할, 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근 가능하여야 함. MySQL, MariaDB, Oracle... 등등이 있음. 데이터베이스 특징 - 무결성 데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔던지 데이터에 오류가 있어서는 안 됨. 무결성을 위해서 데이터베이스는 제약조건이라는 특성을 가짐(ex) 중복 불가, 반드시 포함되기 등...) -데이터의 독립성 데이터베이스의 크기를 변경하건가 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램은 전혀 영향 받으면 안 됨 -> ..
프롤로그 이 글은 "화이트 해커를 위한 암호화 해킹" 을 이용하여 공부하는 걸 기록하기 위한 글이다. 주요 내용 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에 데이터를..