Dreamhack/Dreamhack(1단계)

문제  풀이구성은 첫번째는 index, 두번째는 Login 페이지이다. Home 과 About 페이지는 태그로 ./ 로 되어있어 현재 페이지로 이동한다.별다른 진행을 할 수는 없으므로, 소스코드를 확인한다.  app.py#!/usr/bin/python3from flask import Flask, request, render_template, make_response, redirect, url_forapp = Flask(__name__)try: FLAG = open('./flag.txt', 'r').read()except: FLAG = '[**FLAG**]'users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG}# this..
문제  풀이tmitter의 index 페이지는 위와 같다. 위는 로그인, 아래는 회원 가입으로 구성되어 있다.회원 가입 소스코드를 확인하면 하단에 hint가 작성되어있다.admin으로 회원가입을 진행해야한다. 라는 힌트를 준다.필자는 이 문제를 직접 풀지 못했다. 너무 당연하게 생각했고, 안일한 생각이기도 하다.우린 처음 문제를 다시 볼 필요성이 있다.you need login with "admin"s id!===========================create table tmitter_user( idx int auto_increment primary key, id char(32), ps char(32));id, ps 는 32 byte 로 사용한다는 정보다.위 테이블 구성을 보고 어..
문제  풀이문제는 ID 와 PW 의 입력을 받는 페이지로 시작한다.당장 확인할 수 있는 것들이 없으므로, 바로 소스코드를 확인한다.  get source"; echo "FLAG : ".$FLAG; } }else{ echo "wrong.."; } }?>IDPW get source소스코드는 위와 같다.이제 각 소스코드를 나눠서 분석를 시작한다.if (isset($_GET['view-source'])) { show_source(__FILE__); exit();}/*create table user( idx int auto_increment primary key, id char(32), ps char(32));*/소스코드를 보여주는 부분과 user table 구성을 보여준다. if(is..
문제  풀이처음 인덱스 페이지는 위와 같다. 바로 view-source를 확인해본다.  view-sourcekey == $key) { $ret = ["code" => true, "flag" => $FLAG]; } else { $ret = ["code" => false]; } die(json_encode($ret)); } function gen_key(){ $key = uniqid("welcome to wargame.kr!_", true); $key = sha1($key); return $key; }?> view-source 소스코드를 확인해보..
문제  풀이첫 페이지는 단순 input box, chk 버튼, 소스코드를 확인할 수 있는 태그로 구성되어 있다. view-source 를 확인해본다." . $FLAG .""; exit(); } else { echo "Wrong password.."; } }?> password : view-source여기서 우리가 확인해야할 곳은 strcmp( ) 함수이다.소스코드에서는 사용자 입력 password와 실제 sha1로 난독화한 랜덤 값을 비교하여 같을 경우 0을 반환해 == 0 인지 확인하여 True 일 경우, Flag 값을 출력시킨다.하지만, PHP에서는 strcmp() 함수는 배열과 문자열을 비교할 때 0을 반환하는 취약점을 ..
문제  풀이직접 게임을 해보자.비행기로 장애물을 피하는 게임이며, 문제에 나와있는대로 자바스크립트로 게임이 만들어져있다고 유추한다.우주선이 터널 벽에 닿으면 GAME OVER 가 되면서 YOU NEED GET THE SCORE 31337. 을 확인할 수 있다.이 경우, 자바스크립트 코드를 수정하여 SCORE 31337로 지정해 문제를 풀 수 있음을 유추한다. 개발자도구를 열어 내부 자바스크립트를 확인한다. eval(function(p,a,c,k,e,d){e=function(c){return c}; if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c} k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};..
문제  풀이1) index 화면 2) vuln(csrf) page 사용한 구문은 아래와 같다.script, on, frame 을 *  로 치환하는 것을 확인할 수 있다. 3) flag 4) Login 페이지는 위와 같이 4개로 구성되어 있다.이제 소스코드 분석을 시행한다.  app.py 전체 소스 코드#!/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__)ap..
문제  풀이인덱스 페이지는 아래와 같이 구성되어 있다. 첫번째로 vuln(xss) page에 접속한다.기존 xss-1 문제에서는 스크립트가 실행되었다. 하지만 여기서는 태그의 사용이 불가해 보이므로 다른 코드를 작성한다.구문 : 정상적으로 스크립트가 실행되는 것을 볼 수 있다. flag 페이지는 아래와 같이 구현되어있다.이전 xss-1 의 내부 소스코드를 생각하며 코드를 변경해본다.구문 : 정상적으로 flag 값이 출력되는 것을 확인할 수 있다. 이전에 풀었던 xss-1 과 로직이 똑같으며 단순 스크립트를 실행을 우회하면 쉽게 풀 수 있는 문제다.
grinidia
'Dreamhack/Dreamhack(1단계)' 카테고리의 글 목록