서버 생성 / 문제 파일 다운 페이지를 살펴보면 404Error, robots.txt 항목은 "Page Not Found"와 각 항목의 이름을 반환하는 걸 알 수 있습니다 #!/usr/bin/python3 from flask import Flask, request, render_template, render_template_string, make_response, redirect, url_for import socket app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' app.secret_key = FLAG @app.route('/') def index(): return render_tem..
서버 생성 / 문자 파일 다운 페이지를 살펴보면 지난 시간에 푼 command-injection-1 문제와 유사합니다 혹시 몰라 os 명령어를 같이 전송하니 필터링 과정 없이 정상적으로 ls 명령어가 작동되어 flag 위치를 찾아냈습니다.. (지난 시간에 푼 문제가 왜 새싹인지 의문이 드네요) 너무 허무하게 flag 값을 찾아냈습니다 [ 선수 학습 내용 ] 더보기 OS Injection이란? OS Injection OS Command Injection 또는 Shell Injection은 웹 응용 프로그램이 구동 중인 웹 서버 운영체제에서 명령을 실행하는 취약점입니다 이때 웹 응용 프로그램은 HTTP 폼, HTTP 헤더, 쿠키와 GET 파라미터 mu-sa.tistory.com 'Kali Linux/Linu..
서버 생성 / 문제 파일 받기 페이지를 살펴보면 host를 입력하여 ping 명령어가 작동되는 걸 알 수 있습니다 host 이외의 다른 명령어를 대입해 봤는데 올바른 형식이 아니라고 나오네요 #!/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 == 'P..
서버 생성 / 문제 파일 다운로드 페이지를 살펴보면 지난 시간에 푼 image-storage 와 동일하게 파일을 업로드할 수 있는 화면이 등장하게 됩니다 지난 시간에 제작한 test.php을 업로드해 봤는데 이번에는 php 확장자로 업로드할 수 없다고 나오네요 아마 내부에서 특정 확장자를 막아둔 거 같습니다
서버 생성 / 문제 파일 받기 페이지를 살펴보면 Upload 항목에 파일을 업로드할 수 있습니다 여기에 드림핵 이미지를 업로드하면 이미지가 업로드된 위치를 반환합니다 이 위치에 방문하면 우리가 업로드한 드림핵 이미지를 확인할 수 있습니다 앞서 배운 파일 업로드 취약점을 이용하여 WebShell을 업로드해 flag 값을 찾아봅시다 Image Storage Home List Upload 파일 업로드 WebShell을 업로드하기 전에 소스코드를 살펴봅시다 문제 파일을 다운받으시면 index.php, list.php, upload.php 소스 파일이 들어있는 걸 알 수 있는데 WebShell 실행 전제 조건 중 서버 사이드 언어에 맞게 작성해야 합니다 upload.php 코드 내부를 살펴봤을 때 WebShell..
서버를 생성하고 문제 파일 다운로드 페이지를 살펴보면 메모를 업로드하라는 index.html 페이지와 Upload My memo 페이지를 확인할 수 있습니다 메모를 업로드하라고 하니 업로드해줍시다 메모를 작성하고 메모지 페이지로 접속해 보니 파라미터 값에 우리가 앞서 작성한 '무사' 이름이 그대로 표시되어 있습니다 즉 URL 파라미터 값의 디렉터리 접근 공격을 이용하여 파일을 다운로드할 수 있습니다 ../ (상위 경로) 하나 입력했을 때는 존재하지 않는 경로라고 표시되지만 flag.py 파일을 찾아야 하므로 ../flag.py를 입력해 봅시다 그러면 이렇게 flag 값을 반환하는 걸 알 수 있습니다 해당 문제는 디렉터리 접근 공격으로 파일을 다운로드할 수 있다는 걸 알려주기 위해 쉽게 제출한 문제인 거 ..