사실 burp suite가 메인인 것 같은데, 이거에 대한 공부는 저번에 했었어서 어떤걸 할지 고민하다가 파이썬 코드에 대한 추가공부를 하기로 했습니다.
제가 주의깊게 건 "request.remote_addr"이 문장이었습니다.
REMOTE_ADDR
: 웹 서버에 접속한 접속자의 IP정보를 갖고 있는 ServerVariables의 한 종류!
※ServerVariables
웹 서버가 요청을 처리하기 위해 수집한 모든 메타데이터의 집합체
그리고 아래는 Request.ServerVariables 개체에서 제공하는 환경변수 주 일부만을 가져온 내용입니다.
| 변수 | 설명 |
| AUTH_TYPE | 사용자가 보안이 걸린 스크립트를 접근하려 할 때 서버가 사용자를 인증하기 위해 사용하는 인증 매소드 |
| CONTENT_TYPE | 콘텐츠의 데이터 타입. POST, PUT과 같은 HTTP 쿼리와 함께 사용됨 |
| HTTP_ | HeaderName 헤더에 저장된 값. 이 테이블에 리스트된 헤더 외에 다른 헤더들 역시 ServerVariables컬렉션이 그 값을 가지고 올 수 있도록 "HTTP_"라는 접두어를 붙여 사용해야 한다. |
| REMOTE_ADDR | HTTP 요청을 한 리모트 호스트의 IP주소, 웹페이지에 접근한 사용자의 IP를 알 수 있다. |
| REQUEST_METHOD | HTTP요청을 할 때 사용된 매소드. HTTP의 경우 GET, HEAD, POST 등이 있다. |
| SCRIPT_MAP | URL의 베이스 부분 |
| SERVER_PORT_SECURE | 요청이 안전한 포트에서 처리되면 1, 그렇지 않으면 0. |
여튼 이를 통해 알 수 있는 건, request.remote_addr은 사용자의 IP를 알아내는 코드였다는 것이다.
문제에서 ip접근 제어를 했던 이유
https://dreamhack.io/wargame/challenges/12
로그인 | Dreamhack
최대 52만원 지원금 받고 진짜 해커로 레벨업 하세요!
dreamhack.io
이 문제에서는 flag가 저장된 페이지의 주소가 하드코딩 되어있어서 외부에서 해당 url을 입력하면 그대로 가져가는 구조가 되었습니다. 따라서 외부에서 flag url로 접속해 flag를 찾는 것을 막기 위해 해당 문제에서 ip접근을 제어한 것으로 보입니다.
다양한 헤더
만약 서버가 remote_addr대신 헤더를 믿을 경우, 헤더에 다른 내용을 작성해서 우회할 수 있게 됩니다.
다음 3가지는 ip우회에 자주 사용되는 헤더입니다.
- X-Forwarded-For
- 가장 대표적인 헤더
- 여러 프록시를 거칠 때 IP를 나열해서 전달
- X-Real-IP
- 웹 서버에서 진짜 IP를 딱 하나만 전달할 때 사용
- Client-IP
- 일부 로드 밸런서나 오래된 시스템의 접속자의 IP를 담기 위해 사용
'SWUFORCE > 워게임' 카테고리의 다른 글
| [추가 공부] 어셈블리어 공부 (0) | 2026.03.31 |
|---|---|
| [Dreamhack]Path Finder (0) | 2026.03.31 |
| [web]pathtraversal (0) | 2026.03.24 |
| [추가 공부]diff (0) | 2026.02.17 |
| whatsdifferent (0) | 2026.02.17 |