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