一、前言
个人学习记录笔记
二、思路
1、打开
2、随便找张图片上传试试
3、上传后
4、查看源代码f12进入
注释告诉我们,会运行python的文件
5、根据需求,编写代码
写一个python代码改成jpg或者png格式的文件
内容为(注意,全英文打,或者你复制)
import os
os.system('cat /flag')
6、上传
在元素中即可看到flag
三、知识点
1、Flask
Flask是一个轻量级的Python Web框架,用于快速开发Web应用程序。它具有简单易用的特点,灵活性高,扩展性强,适用于小型到中型的Web应用开发。通过Flask,开发人员可以轻松地创建路由、处理HTTP请求、渲染模板等,同时也可以方便地与各种数据库集成,如SQLite、MySQL、PostgreSQL等。Flask还支持多种插件,可以扩展其功能,满足不同项目的需求。总的来说,Flask是一个优秀的选择,特别适合那些希望快速搭建简单易用的Web应用程序的开发者。
2、文件上传执行漏洞
文件上传执行漏洞(File Upload Execution Vulnerability)是一种常见的Web应用程序安全漏洞,它允许攻击者上传一个恶意文件(如带有恶意代码的脚本、可执行文件等),并通过Web应用程序执行该文件。这可能导致网站被篡改、数据库被破坏、敏感信息被泄露等安全问题。
攻击者利用这种漏洞的步骤通常如下:
-
上传恶意文件:攻击者通过应用程序提供的文件上传功能上传一个经过特殊编码或封装的恶意文件。
-
文件解析和执行:如果应用程序没有正确处理上传的文件,攻击者上传的恶意文件可能会被当作脚本或可执行文件来解析和执行,从而在服务器上运行攻击者想要执行的代码。
为了防止文件上传执行漏洞,开发人员应该采取以下措施:
-
文件类型验证:验证上传文件的类型,只允许上传指定的文件类型。
-
文件名和路径检查:检查文件名和路径是否存在潜在的目录遍历攻击。
-
文件扩展名检查:确保文件扩展名和文件内容类型一致,防止通过更改文件扩展名来绕过安全检查。
-
限制文件大小:设置一个合理的文件大小限制,以防止上传非常大的文件。
-
防止文件解析:使用合适的配置来防止服务器解析敏感文件类型(如.php、.jsp等)。
-
使用白名单:只允许上传已经被白名单化的文件类型和扩展名。
-
限制执行权限:即使文件被执行,也应该限制其对系统资源的访问权限。
-
使用安全的文件上传组件:使用一些经过安全审查的第三方库和组件来处理文件上传。
-
定期更新和打补丁:确保服务器软件和应用程序都使用了最新的安全修补。
-
输入验证和输出编码:对所有输入进行验证,并对所有输出进行编码,以防止跨站脚本攻击(XSS)和注入攻击。
总之,防止文件上传执行漏洞的关键是确保上传的文件在服务器上被正确处理,不会被未授权地执行,同时还要确保服务器和应用程序的其他部分都得到了适当的安全防护。