반응형

WEB hacking/드림핵(dreamhack) 34

드림핵 web-ssrf Write Up

문제 설명 해당 웹 사이트는 flask 백엔드 프레임워크로 제작되었으며 SSRF 취약점을 이용하여 flag파일을 읽어내는 문제이다. 해당 웹사이트는 url 정보를 입력하면 해당 url의 이미지를 보여주는 사이트이다. 만약 내부망에서 일반 사용자들이 접근하지 못하는 기능들이 수행되고 있다면 SSRF 취약점이 도출될 수 있다. SSRF 취약점을 통해 url 파라미터 값을 통하여 내부망의 파일들을 접근할 수 있다. local_host = "127.0.0.1" local_port = random.randint(1500, 1800) local_server = http.server.HTTPServer( (local_host, local_port), http.server.SimpleHTTPRequestHandler ..

드림핵 file-download-1 Write Up

문제 설명 해당 서비스는 파일 다운로드 취약점이 존재하는 웹 서비스이며 flag.py 파일을 다운받으면 플래그를 획득할 수 있다. a.txt라는 이름으로 파일을 생성하고 클릭하면 파일의 내용을 읽을 수 있다. 우리는 flag.py 파일의 내용을 읽어야 하기 때문에 name 파라미터에 flag.py를 입력하면 문제가 해결될것이다. flag.py 파일이 존재하지 않는다고 한다. 이는 해당 디렉토리에 없다는 것이며 디렉터리 트래버셜을 이용하여 상위디렉토리에서 flag.py를 찾도록 하겠다. 디렉터리 트래버셜 기법을 이용하여 flag.py의 내용을 읽었다.

드림핵 image-storage Write Up

문제 설명 해당 문제는 php로 제작된 파일 저장 사이트를 파일업로드 취약점을 이용하여 /flag.txt 파일의 내용을 읽는 문제이다. php로 제작한 웹쉘을 해당 서버에 업로드한다. 파일 업로드를 완료하면 파일 업로드된 경로를 노출하고 있다. 해당 경로에 접속하여 웹 쉘을 실행할 수 있다. 웹 쉘에 접근하여 cat /flag.txt 명령어를 입력하면 flag값을 얻을 수 있다. php 웹쉘 코드

드림핵 command-injection-1 Write Up

문제 설명 flag.py에 플래그가 존재하니 command 명령어를 통해 flag.py 파일을 읽으면 문제를 해결할 수 있다. 문제 풀이 ping 페이지에 접속하면 host ip를 입력하는 페이지가 보여진다. 일단 8.8.8.8로 ping을 전송해보겠다. 그림 2는 8.8.8.8로 ping을 보낸 결과이다. 3번 ping을 보내는 것을 보면 ping -c 3 {사용자 입력} 이런식으로 코드가 이루어져 있다고 예상이 된다. 일단 소스 코드를 한번 살펴 보겠다. @APP.route('/ping', methods=['GET', 'POST']) def ping(): if request.method == 'POST': host = request.form.get('host') cmd = f'ping -c 3 "{h..

드림핵 simple_sqli Write Up

문제 설명 SQL injection을 통해 flag를 알아내면 된다. 문제 풀이 소스코드를 확인하면 admin으로 접속을 하면 flag를 출력한다. select * from users where userid="{userid}" and userpassword="{userpassword}" 위는 로그인시 SQL 쿼리문이다. 공격 방법 1 공격 코드 : select * from users where userid="admin" -- " and userpassword="{userpassword}" 위의 공격코드에서 admin뒤에 -- 주석을 넣어 뒤에 코드를 주석처리 하였다. 따라서 userid가 admin인 계정을 반환하므로 문제를 해결할 수 있을것이다.!! 공격에 성공하였고 flag를 출력하였다. 공격 방법 ..

드림핵 simple-web-request Write Up

문제 설명 STEP 1과 2를 거쳐서 FLAG 페이지에 도달하면 플래그를 출력할 수 있다. 일단 먼저 / 페이지를 보면 index.html 을 렌더링 하고있다. index.html 페이지를 보면 STEP1, STEP2, FLAG 페이지가 존재한다. step1 페이지의 코드를 보자 step1 소스코드 @app.route("/step1", methods=["GET", "POST"]) def step1(): #### 풀이와 관계없는 치팅 방지 코드 global step1_num step1_num = int.from_bytes(os.urandom(16), sys.byteorder) #### if request.method == "GET": prm1 = request.args.get("param", "") prm..

드림핵 csrf-2 (Level1) Write up

문제 설명 https://dreamhack.io/wargame/challenges/269/ csrf-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic dreamhack.io 위 사이트에서 해당 문제를 풀 수 있다. CSRF 취약점을 이용하여 플래그를 획득하면 된다. login 하라고 한다. 먼저 코드를 분석해보자!! users = { 'guest': 'guest', 'admin': FLAG } user의 id와 password가 주어져있다. admin의 password는 flag라고 되어있으니 guest로 로그인을 진행한다. guest로 로그인을 진행하니 admin이 아니라고 한다. adm..

드림핵 csrf-1 (Level1) Write up

문제 설명 https://dreamhack.io/wargame/challenges/26/ csrf-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic dreamhack.io 위 사이트에서 해당 문제를 풀 수 있다. CSRF 취약점을 이용하여 플래그를 획득하면 된다. 사이트에 접속을 하면 vuln(csrf) page, memo, notice flag, flag 페이지가 있다. vuln(csrf) page는 파라미터에 스크립트를 삽입하여 취약점을 실습을 할 수 있는 페이지이고 memo는 request를 받은것을 메모해주는 페이지이다. notice flag는 admin만 접근이 가능하다. flag..

드림핵 xss-2 (Level1) Write up

문제 설명 https://dreamhack.io/wargame/challenges/268/?writeup_id=6566 xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. Reference ClientSide: dreamhack.io 위 사이트에서 해당 문제를 풀 수 있다. XSS를 이용하여 flag를 확인하면 되는 문제이다. /vuln 사이트에 script 공격이 막혀있다. 이것을 우회해서 문제를 풀면 될 것이다. 을 사용하여 XSS 취약점을 도출 하였다. 이것을 바탕으로 payload를 짜면 아래와 같다. payload 해당 페이로드를 /fl..

드림핵 xss-1 (Level1) Write up

문제 설명 https://dreamhack.io/wargame/challenges/28/ xss-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. Reference Client-side dreamhack.io 위 사이트에서 해당 문제를 풀 수 있다. XSS를 이용하여 flag를 확인하면 되는 문제이다. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__nam..

반응형