드림핵
file-download-1 Write-Up
문제문제는 다음과 같으며 flag.py에 플래그가 존재한다.file-download-1(출처 : dreamhack) Write-Up문제에서 주어지는 URL로 접속하면 다음과 같이 파일 업로드 하는 기능과 업로드한 파일들을 확인하는 기능이 구현되어 있다.홈페이지 기능 비록, 문제는 파일 다운로드 취약점을 사용하여 해결하는 문제이지만, 파일 업로드 취약점도 가능한지 확인하였다. 퍼알 업로드 취약점 공격이 가능하다면, 가장 우선적으로 생각하는 접근 방식은 웹 쉘을 올린 후 cat flag.py와 같이 flag.py를 확인하는 명령어를 통해 플래그를 획득하는 방식이다. 하지만, 해당 웹 페이지는 글의 내용을 Content로 변경하여 업로드를 진행하기 때문에 웹 쉘을 올리는 것이 불가능하다.Content로 변경되..
Command Injection and Command Injection-1 Write Up
해당 포스팅은 https://dreamhack.io/?obj=18 를 참고하여 공부 목적으로 작성하였습니다.Command Injection정의SQL Injeciton, DLL Injection과 같은 단어에서 유추할 수 있듯이 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점이다. 즉, 만약 웹이나 서버에 명령어를 실행하는 함수가 존재한다고 가정하자. 명령어를 실행하는 함수에 공격자가 임의의 인자(공격 코드)를 전달하면 Command Injection 취약점이 발생한다. Python을 예시로 살펴보자. Python에서는 기본적으로 os 라이브러리를 지원하고 있기 때문에 대상 IP에 Ping을 보내고 싶다면 os.system(”ping [target-ip]”)와 같이 시스템 함수를 실행할 수 있다. 하..
simple-sqli Write-Up
문제simple-sqli(출처 : dreamhack) Write-Up문제에서 주어지는 URL에 접속할 경우 로그인 화면이 나오게 된다.주어지는 URL 실제 어떻게 로그인 과정이 이루어지는지 확인하기 위해 웹에 대한 코드인 app.py를 살펴보자.app.py에는 DB를 생성하고 연결을 종료하는 등 다양한 코드가 존재하지만 실질적으로 살펴야되는 부분은 login이다. login 코드를 보게되면 userid, password를 입력받아 동적으로 쿼리문을 생성(RawQuery)하고 DB에 해당하는 값을 받아온다. 이후 userid가 admin이면 Flag를 출력하는 과정으로 동작한다.@app.route('/login', methods=['GET', 'POST']) def login(): if request.me..
SQL Injection
해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=14를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.DBMS(데이터베이스 관리 시스템)정의웹 서비스는 데이터베이스에 고객 정보, 기업 내 정보 등 많은 정보를 저장한다. 이러한 데이터를 관리하기 위해 사용하는 것이 DBMS(DataBase Management System)이다. DBMS는 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을 한다. 구분DBMS는 크게 관계형과 비관계형으로 분류하고 대표적인 DBMS는 다음과 같다.종류대표적인 DBMSRelational(관계형)MySQL, MariaDB, PostgreSQL, SQLiteNon-Relational(비관계형)MongoDB, CouchD..
csrf-2 Write-Up
문제csrf-2(출처 : dreamhack)Write-Up주어진 URL에 접속하였을 때 다음과 같이 vuln(csrf)page, flag, login 3개의 페이지가 존재한다.csrf-2 웹 화면 app.py를 살펴보자. 기본적으로 vuln(csrf)page, flag, login 기능에 대한 코드가 존재하며 페이지 상 보이지 않던 change_password 가 존재하는 것을 알 수 있다.from flask import Flask, request, render_template, make_response, redirect, url_for from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = ..
csrf-1 Write-Up
문제csrf-1(출처 : dreamhack) Write-Up해당 문제에서 주어진 URL로 들어가게 되면 다음과 같이 vuln(csrf) page, memo, notice flag, flag 총 4개의 페이지가 존재한다.csrf-1 URL 페이지를 확인하였다면 app.py 에 존재하는 페이지들의 코드를 살펴보자. 코드 전체는 다음과 같다. from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except..

ClientSide:CSRF
해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=8를 참고하여 작성하였으며 공부 목적으로 작성하였습니다. Cross Site Request Forgery(CSRF)정의CSRF(사이트 간 요청 위조)는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점으로, 이용자의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 특정 웹사이트에 요청하게 만드는 공격이다. CSRF 공격 방식은 및 과정은 다음과 같다. CSRF 공격 과정공격자는 이메일이나 게시판에 CSRF 스크립트가 포함된 게시물을 전송(등록)관리자는 공격자가 등록한 CSRF 스크립트게 포함된 게시물 열람관리자가 CSRF 스크립트가 포함된 게시물을 열람할 시 공격자..
xss-2 Write-Up💻
문제xss-2(출처 : dreamhack) Write-Up해당 문제는 XSS-1 과 다르게 vuln 페이지의 입력된 값을 볼 때 alert(1)이 실행되어야 한다. 하지만, 실행되지 않는 것으로 볼 때 XSS 필터링이 적용된 것으로 볼 수 있다.vuln 페이지 나머지 페이지는 동일한 것을 확인하였고 주어진 코드(app.py)는 다음과 같다. 모든 부분에서는 동일한 것을 알 수 있으나 vuln과 관련된 코드에서 render_template() 함수를 활용해 vuln.html을 출력하기 때문에 일반적인 XSS 취약점은 발생하지 않게 된다. 즉, XSS Bypass를 해야 Flag를 획득할 수 있다.from flask import Flask, request, render_template from seleniu..