前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过编写python函数来一步步打造属于自己得渗透模块[提升工作效率]

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

作者头像
Ms08067安全实验室
发布2020-11-03 14:47:42
4300
发布2020-11-03 14:47:42
举报

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

前言:

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

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

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

网页下载函数:

代码语言:javascript
复制
"""
htmldown 此函数功能是 输入url连接,然后保存到本地进行备份。多用在有翻页的后台进行后台备份,输入翻页url,参数等进行批量down备份
url: 访问url
filename: 保存网页信息的本地目录
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请求,可以使用下面函数即可!

代码语言:javascript
复制
"""
htmldown_post 此函数功能是 输入url连接,然后保存到本地进行备份。多用在有翻页的后台进行后台备份,输入翻页url,参数等进行批量down备份
[请求方式为post请求]
参数:
url: 访问url
filename: 保存网页信息的本地目录
head: 请求header
data1: 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抓得包赋值给变量,然后解析成字典格式即可相关代码见下:

代码语言:javascript
复制
# 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文件代码见下:

代码语言:javascript
复制
"""
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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档