본문 바로가기

Web Hacking/Dreamhack

(52)
[Dreamhack] php-1 write up 문제 화면이다. 코드를 바로보면 index.php는 GET요청으로 받은 파라미터를 include 시키고 있다. 바로 LFI 취약점이 보인다. 그래도 양심상 view.php 까지 보면 flag가 파라미터로 넘어오면 Permission denied가 뜬다. 따라서 index.php에서 발생하는 LFI로 우회하라는 것 같다. 보니 flag echo가 안된다. php wrapper로 우회할 수 있다. 디코딩
[Dreamhack] proxy-1 write up Raw Socket Sender가 구현되어 있다고 한다. 음 위와 같이 되어 있다. 코드를 보면 위와 같이 되어 있고 raw socket 프로그래밍은 아니지만 그런 일반 소켓 프로그래밍으로 효과를 줄 수 있는 것 같다. 아무튼 내가 입력한 호스트와 포트에 데이터를 전송하고 있다. flag가 어디서 나오나 확인하니 admin 경로에 POST 요청을 보내면서 위의 조건들을 만족하면 flag가 응답된다. 즉 구현되어 있는 소켓 통신 서비스를 통해 admin ip로 POST요청을 보내면 된다. POST /admin HTTP/1.1Host: host3.dreamhack.games User-Agent: Admin Browser DreamhackUser: admin Cookie: admin=true Content-T..
[Dreamhack] random-test write up 드림이를 위해 문제를 풀어보자! 바로 코드를 보면 #!/usr/bin/python3 from flask import Flask, request, render_template import string import random app = Flask(__name__) try: FLAG = open("./flag.txt", "r").read() # flag is here! except: FLAG = "[**FLAG**]" rand_str = "" alphanumeric = string.ascii_lowercase + string.digits for i in range(4): rand_str += str(random.choice(alphanumeric)) rand_num = random.randint(100, 2..
[Dreamhack] Type c-j write up 올바른 ip와 pw를 입력하면 flag가 나온다. Type c-j Index page 코드를 보게되면 사용자가 입력한 ip를 int로 형변환하여 랜덤 생성된 문자열과 비교를하고 있다. 직접 php로 문자열을 int로 형변환해보니 0이 나온다. 따라서 a 10개를 id에 입력하면 0이될거고 if문에서 길이비교는 통과할 것 같다. 입력해보니 ? 패스가 된다. 일단 비밀번호는 sha1함수를 통해 1을 해시화한 값이다. 해보니 위와 같은 값이 나온다. 마찬가지로 int로 형변환을 해본다. 356만 나온다. 뒤에 a값 5개를 넣으면 어차피 인식이 안될거니 자리수를 채워준다. ㄷㄷ if문에서 앞 조건이 형변환 하니 강제 형변환 돼서 뒤 조건도 int형이 되어 조건이 성립된 것 같다.
[Dreamhack] baby-union write up sqli 문제이다. 코드를 바로 보자! CREATE DATABASE secret_db; GRANT ALL PRIVILEGES ON secret_db.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass'; USE `secret_db`; CREATE TABLE users ( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null, descr varchar(128) not null ); INSERT INTO users (uid, upw, descr) values ('admin', 'apple', 'For admin'); INSERT INTO users (uid, upw, d..
[Dreamhack] BypassIF write up 드림핵 웹해킹 워게임 level 1 다 풀어보자! 첫 문제 BypassIF 서버에 접속하자 입력폼이 하나 존재한다. 코드를 보자. #!/usr/bin/env python3 import subprocess from flask import Flask, request, render_template, redirect, url_for import string import os import hashlib app = Flask(__name__) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" KEY = hashlib.md5(FLAG.encode()).hexdigest() guest_key = hashlib.md5(b"guest").hexd..
[Dreamhack] File Vulnerability Advanced for linux write up 드림핵 웹해킹 로드맵 마지막 문제다 .. 드디어 먼저, 코드를 보자 import os, subprocess from functools import wraps from flask import Flask, request app = Flask(__name__) API_KEY = os.environ.get('API_KEY', None) def key_required(view): @wraps(view) def wrapped_view(**kwargs): apikey = request.args.get('API_KEY', None) if API_KEY and apikey: if apikey == API_KEY: return view(**kwargs) return 'Access Denied !' return wrappe..
[Dreamhack] Apache htaccess write up 위는 바로 문제 서버 접속 화면이다. 서버 분석 Choose a file을 누르면 파일을 선택할 수 있고 위와같이 파일이 올라간다. submit을 누르면, 에러를 반환한다. 아마도 php파일이라서 그런거 같다. 이걸 우회하는게 문제인듯. 다른 파일을 올려보자. 파이썬 파일을 올리니 제대로 올라간걸 볼 수 있다. 이제 코드를 분석해보자.. index.php Online File Box Choose a file... No file uploaded index.php파일이다. 별다른 코드는 없고 자바스크립트 쪽을 보면 파일이 선택 되었을 때, 표시된 부분을 바꾸는 것 같으므로 넘어간다. upload.php