-
what-is-my-ip개인공부/드림핵 2024. 12. 31. 23:00
이번 문제의 경우 /flag 경로에 있는 FLAG를 획득하는 문제이다.
[문제 해결]
1. 문제 파일 분석
이 코드에서 중요한 부분은 2가지로 나눌수 있다.
우선 1번 코드 분석은 아래와 같다.
request.access.route[0]
= 클라이언트의 IP 주소 리스트를 반환하며 HTTP 헤더에서 X-Forwarded-For 부분을 기반으로 생성
= 여기서 X-Forwarded-For란 프록시, CDN 등을 통하여 클라이언트가 요청을 보낼 경우 해당 CDN, 프록시 IP가 아닌 원본 요청 IP를 보여준다.
request.remote_addr
= 요청을 보낸 클라이언트 IP 주소
그러므로 만일 X-Forwarded-For IP가 존재 할경우 해당 IP, 존재하지 않을 경우 클라이언트 IP를 user_ip 변수에 저장하라는 의미이다.
2번 코드의 경우 user_ip를 출력하는 명령을 쉘에서 실행하라는 의미이다.
이 코드에는 취약점이 존재하는데 바로 X-Forwarded-For 값의 경우 조작될 수 있지만 이를 검증하는 코드가 존재하지 않는 다는 것이다.
이를 이용하여 FLAG 획득을 진행한다.
2. Exploit
'개인공부 > 드림핵' 카테고리의 다른 글
baby-union (0) 2025.01.02 BypassIF (0) 2025.01.01 Where-is-localhost (0) 2024.12.31 Replace Trick! (0) 2024.12.25 abcdefg-who (0) 2024.12.23