ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Wargame] - xss-1
    정보보안 2024. 10. 7. 02:00

    페이지로 들어가면 vuln, memo, flag 총 3개의 페이지가 존재한다.

    이를 모두 확인해보자.

    vuln(xss) page

    해당 페이지 URL 속 "param=<script>alert(1)</script>" 구문이 실행되는 것을 보아 XSS 필터링이 없는 것 같다.

    memo

    해당 페이지는 URL속 "memo?memo=hello"가 출력되는 것을 보아 memo= 에 들어갈 값을 입력하면 이를 표시해주는 페이지인 것 같다.

    flag

    flag는 아까 위에서 XSS 필터링이 존재하지 않은 곳으로 파라미터 요청을 하는 페이지인 것 같다.

    그럼 이제 소스코드 분석을 해보자

    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 str(e)
            return False
        driver.quit()
        return True

    read_url() 함수를 보면 cookie가 처음 생성되고, url도 함께 driver에 저장하는것을 보아 최종 cookie 값이 우리가 찾아야할 FLAG 값임을 알 수 있다.

     

    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)

    check_xss 함수를 보면 우리가 입력한 url이 참조되어 위에서 설명한 read_url() 함수로 이동하는 것을 볼 수 있다.

    그럼 /flag 페이지에서 cookie 값을 가져오는 코드를 입력하면 FLAG 값을 얻을 수 있겠다.

    + 아까 /vuln 페이지는 XSS 필터링이 없기때문에 그냥 <script>를 사용해도 되겠다!

    쿠키 값 가져오는 코드 : location.href=document.cookie;
    
    <script>location.href="memo?memo="+document.cookie;</script>

     

    FLAG 값은 /memo 페이지에서 확인이 가능하기에 아까 봤던 memo?memo=hello를 참고해서 스크립트문을 POST 보내면 FLAG를 얻을 수 있다!

    '정보보안' 카테고리의 다른 글

    Lab: DOM XSS in document.write sink using source location.search  (0) 2025.04.12
    [Wargame] - CSRF Advanced  (0) 2024.10.09
    [Wargame] - cookie  (0) 2024.10.08
    [Wargame] - what-is-my-ip  (0) 2024.10.07
    [Wargame] - phpreg  (0) 2024.10.04
Designed by Tistory.