본문 바로가기
dreamhack

[Dreamhack] proxy-1 (LEVEL 1)

by yejin_l 2023. 10. 5.
728x90

Description

Raw Socket Sender가 구현된 서비스입니다.
요구하는 조건을 맞춰 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.

 

풀이

step 1. 접속 정보 사이트로 접속

Raw Socket? : 어느 특정한 프로토콜 용의 전송 계층 포맷팅 없이 인터넷 프로토콜, 패킷을 직접적으로 주고 받게 해주는 소켓

 

사이트에서 Raw Socket Sender를 클릭해보니

host, port, Data를 써서 소켓을 보내는 것 같다. 일단 port는 80, host는 루프백(127.0.0.1)으로, Data는 그냥 data로 보내봤다.

step 2. 보냈더니 에러가 나서 코드를 확인하기 위해 문제 파일을 다운로드했다.

@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

이 코드를 확인해보았을 때, 주소가 127.0.0.1이고, 'User-Agent'의 헤더값이 'Admin Browser'이고, 'DreamhackUser' 헤더값이 'admin'이고, 'admin'의 쿠키값이 true여야 하고, 'userid'가 'admin'이면 FLAG를 주는 것 같다.

 

Step 3. HTTP 요청 메소드대로 Data 값을 작성해주고 Send를 누르면

플래그를 찾을 수 있다.

728x90