본문 바로가기

전체 글237

[SECCON - Beginners_CTF_2021] magic 1. 개요 XSS, CSP, filtering 문제 2. 분석 1) CSP script-src 'self' 로 걸려있어서 동일한 도메인 출처의 스크립트가 실행가능합니다. style-src 'self' ; script-src 'self' ; object-src 'none' ; font-src 'none' /magic API 의 코드를 보면, 파라미터로 받은 token을 돌려주기 때문에 이것을 활용해서 reflection XSS 가 가능합니다. return res.status(200).send(escapeHTML(token) + " is invalid token."); 다음과 같이 메모를 저장하면, XSS가 동작합니다. (외부에서 JS 파일 가져오는 것과 유사합니다.) - NOTE: // 을 넣어서 is i.. 2023. 5. 28.
[SECCON - Beginners_CTF_2021] json 1. 개요 X-Forwarded-For 문제, json 파서 문제 2. 분석 bff 에서 요청을 받고, 검사를 통과하면, api 서버로 요청을 보냅니다. - bff에서 IP를 검사하고, client의 IP 가 192.168.111.X 이어야합니다. - bff 에서는 id가 1 이어야합니다. - api에서는 id가 2 이어야합니다. IP - X-Forwarded-For 헤더로 192.168.111.1로 세팅해서 검사를 통과할 수 있습니다. id - bff와 api 파일의 json 파서가 서로 다릅니다. - data = '{"id": 2, "id": 1}' 로 보낸다면, - bff의 go 표준json 파서 결과는 - id: 1 - api의 buger/jsonparser 결과는 - id: 2 - bff pac.. 2023. 5. 28.
[SECCON - Beginners_CTF_2021]  cant_use_db 1. 개요 race condition 문제 2. 분석 코드를 보면, buy_noodle, buy_soup에 약 1초간 sleep이 걸려있다. 만약, 재빠르게 buy_noodle, buy_soup을 진행하면, balance 가 업데이트되기 전에 구매가 가능하다. import os import re import time import random import shutil import secrets import datetime from flask import Flask, render_template, session, redirect app = Flask(__name__) app.secret_key = secrets.token_bytes(256) def init_userdata(user_id): try: os... 2023. 5. 28.
[SECCON - Beginners_CTF_2021] osoba 1. 개요 File traversal 문제 2. 분석 page 파라미터로 로컬 파일을 반환해줍니다. http://localhost:8080/?page=public/wip.html 코드를 보면 send_file로 로컬 파일을 가져오는데, 로컬 어느 위치에 있든 가져올 수 있습니다. from flask import Flask, request, send_file, make_response app = Flask(__name__) @app.route("/", methods=["GET", "POST"]) def index(): page = request.args.get('page', 'public/index.html') response = make_response(send_file(page)) response.c.. 2023. 5. 28.