목록* (243)
CIDY

Image Storage Home List Upload Upload and Share Image ! index.php파일이다. 이해는 못 하겠지만 Upload and Share Image문구가 있는 걸로 봐서는 문제 사이트의 메인 격에 해당하지 않나 추측해본다.. Image Storage Home List Upload
*File Upload Vulnerability 웹 서비스 이용자의 파일 -> 서버 파일 시스템으로 업로드하는 과정에서 발생하는 취약점이다. 업로드할 파일의 이름에 대한 결정권이 이용자에게 있을 때 발생할 수 있다. 이것도 이전의 Injection들과 마찬가지로 이용자의 입력을 그대로 이용하는 과정에서 발생하는 취약점인 것. 크게 Path Traversal 과 악성 파일 업로드가 있다. ->Path Traversal 파일 업로드 제약을 우회해 임의 디렉토리에 파일을 업로드 할 수 있는 취약점이다. from flask import Flask, request app = Flask(__name__) @app.route('/fileUpload', methods = ['GET', 'POST']) def uploa..

#!/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(['/..
*Command Injection 이전에 임의의 쿼리문 Injection처럼 말 그대로 명령어를 Inject하는거다. 이용자의 입력을 시스템 명령어로 실행하도록 함 -> 명령어 실행 함수에 이용자가 인자를 전달할 수 있는 상황이어야 함. 그리고 시스템 해킹 공부할 때 배웠던 메타문자 같은걸로 명령 여러개 실행하는것도 가능함을 감안하면 다양한 공격이 가능할 듯. ->메타문자 `` 명령어 치환 ``안에 들어있는 명령어를 실행한 결과로 치환 $() 명령어 치환 $()안에 들어있는 명령어를 실행한 결과로 치환. 중복 사용 가능. && 명령어 연속 실행 한 줄에 여러 명령어 사용 가능. 앞 명령어에서 에러가 없어야 뒷 명령어를 실행. (Logical And) || 명령어 연속 실행 한 줄에 여러 명령어 사용 가능..

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).toLowerCas..

*NoSQL Injection SQL Injection과 방법은 유사하다. 둘 다 이용자의 입력이 쿼리에 포함되면서 발생하게 된다. MongoDB는 오브젝트 타입의 입력값을 처리할 때 사용하는 쿼리 연산자를 통해 여러가지를 할 수 있다. (*별도의 타입 검증이 없을 경우 오브젝트 타입의 값을 입력할 수 있다.) const express = require('express'); const app = express(); const mongoose = require('mongoose'); const db = mongoose.connection; mongoose.connect('mongodb://localhost:27017/', { useNewUrlParser: true, useUnifiedTopology: tr..
*NRDBMS, NoSQL RDBMS의 경우 복잡하며, 용량의 한계가 있음 -> 이를 해결하기 위해 NRDBMS등장 NRDBMS의 경우 SQL을 이용하지 않고 복잡하지 않은 데이터 저장 -> 단순 검색에 최적화된 저장 공간 키-값(Key-Value)을 이용해 데이터를 저장한다. RDBMS의 경우 SQL이라는 정해진 문법이 있었기에 한 가지 언어로 다양한 DBMS를 이용하면 됐었지만, NoSQL의 경우 DBMS의 종류에 따라 구조와 사용 문법을 따로 알아야 한다. (*NoSQL은 Not Only SQL -> SQL을 이용하지 않고 데이터 처리함을 의미) *MongoDB JSON형태인 Document를 저장한다. -> 스키마를 따로 정의하지 않아 각 컬렉션(Collection)에 대한 정의가 필요없음 -> ..

#!/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..