목록분류 전체보기 (48)
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..

1. HTTP 프로토콜 특징Connectionless하나의 요청-응답 후 연결이 종료되고, 이후의 요청은 새로운 연결로 처리함Stateless서버는 이전 요청의 상태를 저장하지 않으며, 요청마다 새로운 정보를 전달해야 함서버가 클라이언트를 기억하지 못하므로, 지속적인 사용자 인증이 어렵다는 한계가 있다. 2. 쿠키 (Cookie)서버가 클라이언트에 저장하는 Key-Value 형식의 데이터이후 클라이언트가 요청할 때 해당 쿠키를 서버에 포함하여 보냄.서버는 쿠키를 이용해 사용자를 식별하고 상태를 유지함.용도는 다음과 같다. 정보 기록7일 간 표시하지 않기 등의 설정을 저장상태 유지로그인 상태를 유지하거나 사용자 맞춤 설정 정보를 저장 3. 쿠키 변조 문제쿠키는 클라이언트에 저장되므로, 변조될 위험이 있..