Python 설명서에 pickle
이 안전하지 않으므로 신뢰할 수없는 사용자 입력을 구문 분석해서는 안됩니다. 이것을 연구하면 거의 모든 사례가 os.system
을 통해 system()
전화로이를 입증합니다.Python Pickle Insecurity 이해
나에게 명확하지 않은 점은 os
모듈을 가져 오지 않고 os.system
이 올바르게 해석되는 방법입니다.
>>> import pickle
>>> pickle.loads("cos\nsystem\n(S'ls /'\ntR.") # This clearly works.
bin boot cgroup dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var
0
>>> dir() # no os module
['__builtins__', '__doc__', '__name__', '__package__', 'pickle']
>>> os.system('ls /')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>>
누군가 설명 할 수 있습니까?
+1 모듈 코드를 찾으려면 – tMC