목록* (243)
CIDY

*자바스크립트 키워드 필터링 자바스크립트는 Unicode escape sequence를 지원한다. -> 유니코드 문자를 코드포인트로 나타낼 수 있는 표기법이다. ("\uAC00" == "가") var foo = "\u0063ookie"; // cookie var bar = "cooki\x65"; // cookie \u0061lert(document.cookie); // alert(document.cookie) 따라서 위와 같은 필터링 문자열 우회가 가능해진다. 또, 자바스크립트는 Computed member access를 지원한다. document["coo"+"kie"] == document["cookie"] == document.cookie 위와 같이 객체의 특정 속성에 접근할 때 속성 이름을 동적으로..

#!/usr/bin/python3 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: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0.1"}) try: options = webdriver.ChromeOptions() for _ i..

*이벤트 핸들러 속성 JS코드를 실행할 수 있는 HTML태그는 여럿 있는데, 그중에서 on으로 시작하는 태그들은 이벤트 핸들러 지정이다. 이벤트 핸들러는 특정 요소에서 발생한느 이벤트를 처리하기 위한 콜백 형태 핸들러 함수 -> 이벤트 핸들러 안에 XSS공격 코드를 넣음 -> 그 이벤트 발생 시 해당 공격 코드 실행 자주 사용되는 이벤트 핸들러 속성으로는 onload, onerror, onfocus등이 있다. ->onload이벤트 핸들러 ->onerror이벤트 핸들러 ->onfocus이벤트 핸들러 input태그에 커서를 클릭해 포커스되면 실행되는 이벤트 핸들러이다. autofocus로 자동 포스커시키거나, URL의 hash부분에 input태그의 id속성값을 입력해 자동으로 포커스되도록 한다. *문자열 치..

#!/usr/bin/env python3 from flask import Flask, request import os app = Flask(__name__) @app.route('/' , methods=['GET']) def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmd app.run(host='0.0.0.0', port=8000) app코드 자체는 짧다. 인자 준 대로 리턴하는데... GET말고 다른걸로 해야 else문이 실행되면서 system에 대한 cmd가 실행될 듯 하다. 이것저것 알아보던 차에 bu..

10000번 클릭하라는 게 말이 되나 싶지만 생각보다 현실적인 수치다. 진짜 이름값하는 문제네... 이렇게 하면 될 줄 알았는데 안된다 ㅋㅋ 얘를 건드려야 할 듯?(click으로 검색해봄) 콘솔에 아래 코드를 입력해주자 for(i=0; i 맞음

#!/usr/bin/python3 from flask import ( Flask, request, render_template ) import http.server import threading import requests import os, random, base64 from urllib.parse import urlparse app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() # Flag is here!! except: FLAG = "[**FLAG**]" @app.route("/") def index(): return render_template("index.html") @app...

웹 개발 언어는 HTTP요청을 전송하는 라이브러리를 제공한다. HTTP라이브러리는 PHP의 php-curl, NodeJS의 경우 http, python의 경우 urllib, requests가 있다. 라이브러리들은 이용자가 HTTP요청을 보낼 때도 이용되지만, 서버 간 통신에도 이용된다. 서버는 다른 웹 애플리케이션에 존재하는 리소스를 이용하기 위한 목적으로 통신한다. (마이크로서비스 간 통신, 외부 API호출, 외부 웹 리소스 다운로드 등) 마이크로서비스들은 HTTP나 GRPC를 이용해 API통신을 한다. (웹 서비스의 구성요소가 늘어남에 따라 마이크로서비스들로 웹 서비스를 구현하는 추세 -> SSRF는 파급력이 높은 취약점임) (*마이크로서비스: 소프트웨어가 API를 통해 통신하는 소규모의 독립적인 서..

#!/usr/bin/env python3 import os import shutil from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(__name__) UPLOAD_DIR = 'uploads' @APP.route('/') def index(): files = os.listdir(UPLOAD_DIR) return render_template('index.html', files=files) @APP.route('/upload', methods=['GET', 'POST']) def upload_memo(): if request.method == 'POST': filename = request...