목록2025/04/04 (8)
rsp-∞

문제 설명은 딱히 없고 링크에 접속해 본다. What과 How를 각각 누를 수 있게 되어 있는데 How를 누르면 페이지가 다음과 같은 내용을 띄운다. HTML와 CSS, JS를 사용하여 사이트를 만들었다고 한다. 개발자 도구를 열어 각 항목을 확인해 보자. 먼저 순서대로 보면 HTML 코드 부분에서 플래그의 1/3이 저장되어 있는 것을 볼 수 있다. 다음으로 CSS를 확인해 보려고 하니 아래 사진과 같은 화면이 나왔다. 영... 플래그가 여기 숨어 있을 것 같진 않았다. 그러면 소스에서 페이지 항목에 들어가 파일이 어떻게 구성되어 있는지 확인해 보자. 여기에 HTML, JS, CSS가 다 있었다. How 페이지에서 본 순서대로 CSS를 먼저 확인하고 JS를 확인한다. 그냥 막 스크롤을 내리다 보면..

허무하리만큼 빠르게 풀어 버린 문제다. 설명도 없고 사이트에 들어가서 플래그를 찾아보라고 나온다. 일단 사이트는 이렇게 생겼다. 내가 할 수 있는 건 사이트에서 기본적으로 개발자 도구를 열어 보는 게 일차원적이고 본능적인데.... 위와 같이 플래그가 대놓고 나와 있는 걸 볼 수 있다. 푼 건 좋지만 허무하다.
보호되어 있는 글입니다.

1. Clientside 취약점웹 서버의 이용자를 대상으로 공격할 수 있는 취약점XSS(Cross Site Scripting)가 대표적 2. XSS개념 : XSS는 클라이언트 측 웹 취약점 중 하나로, 공격자가 악성 스크립트를 웹 리소스에 삽입하여 사용자의 웹 브라우저에서 실행하도록 유도하는 공격 방식공격 방식 : 공격자가 특정 웹사이트(XSS 취약점이 존재하는 페이지)에 악성 스크립트를 삽입 -> 사용자가 해당 페이지를 방문하면 스크립트가 실행되어 쿠키 및 세션 정보 탈취가 가능해지고, 공격자는 피해자의 계정으로 임의의 기능을 수행보안 조치(SOP) : SOP(Same-Origin Policy) 정책으로 인해 다른 도메인에서 정보를 읽는 것이 어려워졌지만, 공격자들은 이를 우회하는 다양한 기술을 개발 ..

csrf-1과 대부분의 인터페이스는 동일하지만 사이트에 들어가 보면 로그인을 해 달라는 문장이 크게 나온다. 코드를 살펴보자. #!/usr/bin/python3from flask import Flask, request, render_template, make_response, redirect, url_forfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Serviceimport urllibimport osapp = Flask(__name__)app.secret_key = os.urandom(32)try: FLAG = open("./flag.txt", "r").read()except: FLAG = "[**FL..

사이트에 들어가서 이번에도 vuln(csrf) page 항목에 들어가 본다. 아래와 같이 출력을 볼 수 있다. url을 보면 ' return ''memo_text = ""@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", None) if text: memo_text += text return render_template("memo.html", memo=memo_text)@app.route("/admin/notice_flag")def admin_notice_flag(): global memo_text if request.remote_addr != "127.0...

서버를 생성하고 사이트에 접속하면 전체적인 인터페이스는 똑같지만 여기서 차이가 있다. vuln(xss)page에서 url에 똑같이 ' return ''memo_text = ""@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", "") memo_text += text + "\n" return render_template("memo.html", memo=memo_text)app.run(host="0.0.0.0", port=8000) 이 코드의 /vuln 부분에서 사용자가 입력한 param 값을 직접 출력하지 않고, 정적 html인 param.html로 렌더링한다. 그러므로 xss-1에..

서버를 생성하여 홈페이지를 먼저 본다. 첫 번째 vuln(xss)page 항목에 들어가 보았더니 아래 사진과 같은 알림창이 내려왔다. 1이 나왔는데, 이게 xss 취약점을 가지고 있다는 것을 알려 준다. 위 url을 보면 지금 명령어가 url에 포함되어 해당 스크립트가 실행되고 있다는 것을 알 수 있기 때문이다. 그렇다면 이 페이지는 ' return ''memo_text = ""@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", "") memo_text += text + "\n" return render_template("memo.html", memo=memo_text)app.r..