강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

신예준님의 프로필 이미지
신예준

작성한 질문수

해킹 입문부터 중급까지, 한 번에 배우는 웹해킹

CRLF 질문 있습니다

작성

·

7

0

CRLF Injection 문제에서
header=header1 \r\n\r\n &value=<script>alert(1)</script> 로 payload 작성하시던데 그럼
header1 (header 쪽)
\r\n
\r\n
:<script>alert(1)</script>(body 쪽)

이렇게 되는 거 아닌가요? 근데 그러면 header 부분에는 header1 만 덩그러니 남는데 이거는 문제없는건지 궁금합니다. (원래 header에는 Content-Type : ~~ 처럼 키-값쌍이 있어야 하지않나요? )

그리고 body 부분에는 :가 포함된 <script>문이 되는데 (물론 이번 문제에서는 조건이 충족되서 상관없지만) : <- 없이 그냥 <script>alert(1)</script> 처럼 쓸 수 있도록

header=header1&value= \r\n\r\n<script>alert(1)</script> 이렇게 쓰는 거는 안되나요?
이 구문으로 쓰면 정답이 안 나오더라구요

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 신예준님.

CRLF 삽입(Injection) 문제를 다루실 때 여러모로 헷갈릴 수 있는 부분이 많으신 것 같습니다. 질문 주신 부분에 대해 답변 드리겠습니다.

CRLF(Carriage Return Line Feed)는 헤더와 본문(body)의 경계를 형성하는데 사용되며, 이를 통해 헤더와 본문을 구분할 수 있습니다. 때문에 의도한대로 모의해킹을 적용하기 위해선 CRLF 주입의 정확한 위치와 구성 요소가 중요합니다.

이 문제에서 사용된 페이로드는 다음과 같은 역할을 합니다:
1. 헤더 단절: \r\n\r\n를 사용해 헤더가 끝났음을 서버에 알립니다. 이 부분이 없을 경우, 헤더와 본문이 올바르게 구분되지 않을 수 있습니다.
2. 본문 시작: \r\n\r\n 이후의 내용은 HTTP 요청의 본문(Body)로 해석됩니다. 본문의 시작 위치가 명확해야 정확하게 데이터를 전달할 수 있습니다.

질문하신 부분에서 header1 \r\n\r\n<br><script>alert(1)</script>는 헤더를 종료하고 본문에 자바스크립트 코드를 삽입하는 일련의 작업입니다. 이때, 헤더 부분에는 키-값 쌍이 들어가야 한다는 말씀은 맞습니다. 특정 웹 서버나 애플리케이션에서는 올바른 헤더 구성이 중요하며, 그렇지 않을 경우 쿼리를 무시하거나 오류가 발생할 수도 있습니다.

마지막으로 두번째 방법(header=header1&value= \r\n\r\n<script>alert(1)</script>)을 사용해도 CRLF Injection이 가능하지만, 이 때는 웹 서버가 어떻게 헤더와 본문을 구분하고 해석할지를 명확히 이해해야 합니다. 첫 번째 방식이 정답으로 제시된 이유는 서버의 특성상 명확한 경계 설정을 위해 그런 것일 수 있습니다.

유사 질문이나 관련된 다른 사용자들의 경험을 통해 추가 학습을 원하신다면 아래 링크를 확인해 보세요:
- CRLF Injection 관련 사례와 해결 방안

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

신예준님의 프로필 이미지
신예준

작성한 질문수

질문하기