社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

通过编写python函数来一步步打造属于自己得渗透模块[提升工作效率]

Ms08067安全实验室 • 5 年前 • 866 次点击  

本文作者:mzfuzz(Ms08067安全实验室成员)


前言:

python的特性这里不过多细说,简单来说可以让我们很快完成任务。

日常工作中,难免我们会重复工作,这里就需要我们去写好一些相关的模块,然后等需要用的时候,直接调用自己写的包即可,这样可以节省自己大量的时间用来研究漏洞或者刷朋友圈!

下面我大概举3个模块来说明


网页下载函数:


"""htmldown 此函数功能是 输入url连接,然后保存到本地进行备份。多用在有翻页的后台进行后台备份,输入翻页url,参数等进行批量down备份url: 访问urlfilename: 保存网页信息的本地目录head: 请求header"""

def htmldown(url,filename,head): for i in range(0,4): try: res=requests.get(url,header=head,timeout=5) with open(filename,'a+') as f: f.write(res.text) print(f"{url} successful!!!") return except Exception as e: print(e) pass


通常我们渗透下站点,需要下载解析一些站点信息,大部分信息都是存在页数得,这里就可以通过此函数来进行下载,填写url,header头,下载文件保存位置即可如果遇到post请求,可以使用下面函数即可!


"""htmldown_post 此函数功能是 输入url连接,然后保存到本地进行备份。多用在有翻页的后台进行后台备份,输入翻页url,参数等进行批量down备份[请求方式为post请求]参数:url: 访问urlfilename: 保存网页信息的本地目录head: 请求headerdata1: post请求的参数"""def htmldown_post(url,filename,head,data1):    for i in range(0,4):        try:

res=requests.post(url,header=head,data=data1,timeout=5) with open(filename,'a+') as f: f.write(res.text) print(f"{url}+'\t'+{data1} successful!!!") return except Exception as e: print(e) pass



header头解析:


上文中得header是必不可缺得,因为场景往往是访问后台,需要cookie认证.

为了更方便快捷,直接复制burp抓得包赋值给变量,然后解析成字典格式即可相关代码见下:


# head="""# GET /userInfo/getUserBasicInfo HTTP/1.1# Host: admin.ceshi123.com# Connection: close# Accept: */*# User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36# X-Requested-With: XMLHttpRequest# Accept-Encoding: gzip, deflate# Accept-Language: zh-CN,zh;q=0.9,en;q=0.8# Cookie: phpsession=3478173981273981ceshi# """
def ls_header(str_headers: str) -> dict: if not str_headers: return {} items = str_headers.splitlines() headers = {} for item in items: item_str = item.strip() if not item_str: continue if item_str.startswith(':'): continue i = item_str.find(':') headers[item_str[:i]] = item_str[i + 1:].strip() return headers


xlsx文件生成和读取:


execl文件处理是我们常见得,我们再处理文件得时候,不管需要解析,还是要过滤,都需要读取,我们对网站后台解析后得数据也需要execl进行输出。

这里我们就可以写个函数,用来读取xlsx文件,返回数组列表。也可以将数组列表生成xlsx文件代码见下:


"""read_xlsx()读取xlsx文件 结果返回列表"""
def read_xlsx(f): try: file1=f xls_list=[] table = load_workbook(f) sheetname=table.sheetnames for shee in sheetname: data=table[shee]
rows=data.rows for i in rows: a=[] for x in i: # print(x.value) a.append(str.lower(str(x.value))) xls_list.append(a)

return xls_list except Exception as e: print(e) pass
"""write_xlsx 此函数用来生成xlsx文件传入参数必须是列表,多个函数组合调用来生成excel文件"""
def write_xlsx(datas,fi): try: wb=Workbook()        ws=wb.active
for i in datas: ws.append(i) wb.save(fi) print(f"save file as {fi}!!! ") except Exception as e: print(e)


结尾#

相关代码github:

https://github.com/shinyxiaoxia/mzfuzz

这种每个人得使用都不一样,所以可以参考下这种方法,一点点去模块化自己频繁的操作。


之后需要什么操作,只需要import mzfuzz即可。






扫描下方二维码加入星球学习

加入后会邀请你进入内部微信群,内部微信群永久有效!

目前30000+人已关注加入我们

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74489