proxy-1

소스코드 분석
def login():
- /socket 경로로 POST 요청이 들어오면, 파라미터 값으로 전달된 “호스트:포트”로 “데이터”를 전송한다.
- 그리고 응답이 오면, 그 값을 디코딩 하여
socket_result.html파일로 전달하여 출력한다.

def admin():
- admin 경로로 POST 요청이 들어오면, 전달 받은 값을 5번 검증(if (…))하고 플래그를 출력하고 있다.

- (1) 홈페이지에 접속하면
Raw Socket Sender페이지로 접속된다. - (2) 임의 값을 입력하고 전송하면 아래와 같은 형식으로 패킷이 서버로 전송된다.

- 우리는 이전 과정에서 /admin 경로로 POST 요청을 보내야 플래그가 출력됨을 확인했다.
- /socket 경로로 돌아와 아래 데이터를 삽입한 후 전송을 시도한다.

- “Only Admin Browser” 메시지가 출력되었으며, 해당 출력 값은 admin() 함수의 2번째 값 검증 구간이었다.

- 요청 헤더 및 바디 부분에 검증 로직을 통과하기 위한 값을 입력 후 “Send” 버튼을 누르면,
timed out버튼 발생한다. - 원인은
Content-Length값과 요청 바디 길이가 맞지 않기 때문이다. (수동으로 입력했기 때문에 다른 값이 입력됨)

- 요청 바디 길이와 컨텐트 길이 값을 맞춰준 후 패킷을 전송하면 플래그 확인 가능하다.

🐛.. 🐛.. 🐛..
REFERENCE
