본문 바로가기

반응형

Dreamhack

(5)
[Dreamhack] BISC board 이번엔 BISC board 문제를 풀어볼 거다. 웹페이지 정찰 먼저 접속을 하면 아래와 같이 로그인을 하라고 alert이 뜬다. 그러면 아래와 같이 /login 페이지가 나오는데 계정이 없으니 ID: 1111 PW: 1111로 회원가입 후 로그인 해보겠다. 로그인하면 아래와 같이 글 목록 페이지가 나온다. Write 버튼을 눌러서 글쓰기도 가능하다. XSS가 될까 싶어서 아래처럼 글을 써봤는데 XSS는 안 통하는 것 같다. 글을 수정할 때도 XSS는 없는 것 같아 코드를 보고 문제를 풀어보겠다. 코드 확인 먼저 app.js 코드를 봤는데에 계정 정보가 하드코딩 돼있었다.var accounts={"BISC2023":"TeamH4C"} 그 다음 views 디렉터리를 봤는데 아래와 같은 파일 들이 있었..
[Dreamhack] phpmyredis 이번 글은 자세히 적지 않고 풀이 과정만 적을 예정이다. (귀찮음 이슈..) /config.php로 접속하면 아래와 같은 화면이 나온다. GET으로 조회를 할 수 있고 SET으로 설정을 할 수 있다. GET에서 Key에 *를 입력하면 아래와 같이 조회할 수 있는 모든 것이 나온다. dbfilename은 redis에 변경 사항이 있을시 해당 사항을 기록하는 파일.save는 변경사항이 몇 번 있을시 몇 분마다 기록을 할지를 설정하는 key이다. SET으로 save를 1 1 1 1 1 1로 바꿔주고 dbfilename을 exploit.php로 바꿔준다. 그다음 /로 돌아와서 `return ""` 를 입력해준다. 그러면 웹쉘이 업로드되고 /exploit.php?cmd = ls -al / 로 이동해보면 아래와..
[Dreamhack] PATCH-1 이번 dreamhack 문제는 코드를 패치하는 문제다.지금까지 취약점 공격만 해봤지 취약점 패치는 해본 적이 없어서 새로웠다.#!/usr/bin/python3from flask import Flask, request, render_template_string, g, session, jsonifyimport sqlite3import os, hashlibapp = Flask(__name__)app.secret_key = "Th1s_1s_V3ry_secret_key"def get_db(): db = getattr(g, '_database', None) if db is None: db = g._database = sqlite3.connect(os.environ['DATABASE']) db.row_fa..
[Dreamhack] chocoshop 이번엔 dreamhack chocoshop 문제를 풀 거다.웹페이지에 접속하면 바로 보이는 페이지다. 세션이 요구되므로 Acquire Session 버튼을 눌러서 세션을 발급받는다. 그러면 이렇게 세션을 발급 받을 수 있고 오른쪽 위에는 현재 잔액이 표시된다. SHOP 버튼을 누르면 빼빼로 또는 플래그를 구매할 수 있다. MYPAGE 버튼을 누르면 위와 같이 나오고 Claim 버튼을 눌러서 쿠폰을 발급받을 수 있고 Submit에 쿠폰을 입력하여 쿠폰을 적용시킬 수 있다. 적용하면 쿠폰이 적용됐다는 알림과 함께 1000원이 생긴 것을 확인할 수 있다.하지만 이걸로는 FLAG를 구매하지 못 한다.쿠폰은 한 번밖에 적용 못 하고 발급도 안 돼서 방법이 없다. 문제 설명에는 이렇게 써져 있는데 쿠폰을 레이스 ..
[Dreamhack] Safe Input 이번에 풀어볼 문제는 dreamhack safe input 문제다.from flask import Flask, redirect, request, render_templatefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom time import sleepfrom os import urandom, environfrom urllib.parse import quoteapp = Flask(__name__)app.secretkey = urandom(32)FLAG = environ.get("FLAG", "DH{fake_flag}")PASSWORD = environ.get("PASSWORD", "1234")def..

반응형