[HackCTF] Button
2022. 4. 5. 19:27
Study/Web Hacking
Web: Button 문제: http://ctf.j0n9hyun.xyz:2026 문제 페이지에 접속하면 가장 먼저 "아래의 버튼으로 하여금 플래그를 출력하게 해줘!"라는 문구가 보인다. 이 문구가 왠지 힌트가 될 거 같다. 개발자 도구를 열어서 버튼 요소를 살펴봤다. 확인해보니 버튼은 submit 버튼이었고 form은 method가 post로 설정되어 있다. 여기서 문제 페이지에 나와있던 문구가 생각났다. 버튼으로 하여금 플래그를 출력해달라고... submit되는 value를 button에서 flag로 바꿔봤다. 버튼의 내용이 button에서 flag로 바뀌었다. 여기서 버튼을 클릭하면 value는 button이 아니라 flag로 전송될 것이다. 혹시나 하는 마음에 시도해본 방법인데...결과는 .......
[HackCTF] Hidden
2022. 4. 4. 20:52
Study/Web Hacking
Web: hidden 문제: http://ctf.j0n9hyun.xyz:2023/ 문제 페이지에 접속하면 위와 같은 화면이 나온다. 화면에는 1, 2, 3, 4번의 버튼이 있고 이를 각각 클릭하면 다음과 같은 alert이 뜬다. 이때 문제를 어떻게 풀어야 할지 감이 왔다. 바로 개발자 도구로 html을 살펴봤다. 각각의 버튼은 form태그 안에 있었고 클릭하면 get방식으로 value값이 submit되고 있었다. 5번 파일에 플래그가 있다고 했으니 get 방식으로 5번 파일에 접근해봤다. ?id=5로 접근했더니 Flag를 획득했다.
[HackCTF] /
2022. 3. 28. 00:08
Study/Web Hacking
Web: / 문제: http://ctf.j0n9hyun.xyz:2020/ 문제 화면엔 Hidden Flag 텍스트와 로봇 이미지가 있다. 이미지가 있는 걸 보고 이미지를 이용해서 숨겨진 flag를 찾는 문제라고 생각했다. 처음엔 img 태그에 onerror 속성을 이용해서 script를 삽입해보려 했는데 막상 풀다보니 이렇게 해결하는 문제가 아닌 것 같았다. 문제에 어떻게 접근할지 계속 생각하고 있는데 같이 문제를 풀던 지인분이 "로봇"이라는 힌트를 주셨다. 이미지에 있는 로봇 자체가 힌트라고... 이게 무슨 말일까 곰곰히 생각해보니 딱 하나 떠오르는 게 있었다. robots.txt!!! 너무 어이없었지만 바로 robots.txt를 열어봤다. 열어보니 robots.txt는 /robot_flag/의 접근을..
[dreamhack] XSS-2
2022. 3. 11. 01:15
Study/Web Hacking
XSS-1과 마찬가지로 XSS 취약점을 찾고 flag를 획득하자. XSS-1과 똑같이 vuln, memo, flag 페이지가 존재한다. 제공된 소스 코드도 vuln에서 param을 return하는 코드가 빠진 거 외엔 XSS-1과 다를 게 없다. #!/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_ur..
[dreamhack] XSS-1
2022. 3. 10. 23:48
Study/Web Hacking
XSS 취약점을 이용해서 flag를 획득해야 한다. 아래는 문제 페이지다. vuln(xss) page, memo, flag 세 가지의 페이지가 존재한다. 제공된 문제 소스 코드를 통해서 XSS 취약점이 존재하는 곳을 알아봤다. @app.route("/vuln") def vuln(): param = request.args.get("param", "") return param 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) vuln과 memo는..
[dreamhack] session-basic
2022. 1. 25. 22:17
Study/Web Hacking
admin 계정으로 로그인해서 flag를 획득해야 하는 문제다. 이번 문제에서는 cookie와 session으로 인증 상태를 관리하고 있다. 따라서 admin으로 로그인하려면 admin의 session_id가 필요하다. 일단 이전 실습에서처럼 guest 계정으로 로그인했다. 그리고 cookie를 보면 새로운 session_id가 생성된 것을 확인할 수 있다. 이 session_id는 guest 계정을 인증해주는 key다. 위에서 value 값을 admin의 seesion_id로 바꿔주면 admin 계정으로 로그인이 가능할 거 같다. 문제 파일에 있는 소스코드는 아래와 같다. users 배열에 사용자 계정이 있고, session_storage 배열이 있다. login에 관련된 코드를 보면 로그인에 성공할 ..
[dreamhack] cookie
2022. 1. 25. 12:33
Study/Web Hacking
admin으로 로그인해서 flag를 획득해야 하는 문제다. 문제 페이지에 접속하면 다음과 같다. 로그인 페이지는 아래와 같고, guest로 로그인해봤다. guest/guest로 로그인했더니 guest 계정으로 로그인 되었다. 이 상태에서 cookie를 확인해보면 username으로 guest가 추가된 것을 볼 수 있다. 여기서 guest를 admin으로 바꾸고 페이지를 새로고침하면, admin으로 로그인 할 수 있다. flag는 DH{7952074b69ee388ab45432737f9b0c56} cookie의 개념을 잘 이해하고 취약점을 알고 있으면 해결할 수 있는 문제였다. https://dreamhack.io/wargame/challenges/6/ cookie 쿠키로 인증 상태를 관리하는 간단한 로그인..
[dreamhack] devtools-sources
2022. 1. 25. 12:27
Study/Web Hacking
개발자 도구의 Source 탭 기능을 활용하면 flag를 찾을 수 있다고 힌트가 주어져있다. 문제 파일을 다운로드 하고, index.html에서 개발자 도구를 열어봤다. Source 탭에 있는 파일들 중에서 flag를 찾아야 하는 것 같다. ctrl+F 단축키를 입력하면 단어를 검색할 수 있다. 그런데 개발자 도구창에서는 안되는 거 같아 VScode에서 코드를 열고 찾아봤다. 일단 index.html에는 없는 거 같다. 다른 html 파일에서도 flag는 찾을 수 없었다. 다음으로 main.4c6e144e.js을 살펴봤다. main.4c6e144e.js에도 flag는 없는 거 같다. 다음은 main.3da94fde.css에서 찾아봤다. main.3da94fde.css에서도 flag는 찾지 못했다. fla..
[dreamhack] cookie & session
2022. 1. 25. 03:03
Study/Web Hacking
Cookie HTTP에서는 Connectionless와 Stateles라는 특징 때문에 웹 서버가 클라이언트를 기억할 수 없다. 이때 웹 서버가 클라이언트를 식별할 수 있도록 만든 것이 바로 cookie이다. coockie는 웹 서버가 클라이언트한테 발급하고, 클라이언트는 cookie를 요청에 포함하여 전송한다. cookie는 key와 value로 이루어져 있다. → 쿠키는 일반적으로 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용하고, 클라이언트에 저장된다. HTTP 프로토콜 특징 Connectionless 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미한다. 특정 요청에 대한 연결은 이후의 요청과 이어지지 않고 새 요청이 있을 때 마다 항상 새로운 연결을 맺는다. Statel..