#知识点:

1、文件操作类代码编写

2、文件上传&下载&删除

3、文件内容&读取&写入

4、第三方编辑器引用实例

小迪博客-文件操作&上传&下载&删除&读取&写入等

#文件上传类:-任意文件上传

1、代码自主写

2、编辑器引用

#文件下载类:-任意文件下载

1、直连URL访问

2、传参头部修改

#文件删除类-任意文件删除

1、文件删除

2、文件夹删除

#文件内容操作类-任意文件读取&写入

1、文件读取

2、文件写入

#文件包含-任意文件包含

1、本地文件包含

2、远程文件包含

#Web漏洞核心:

1、可控变量

2、特定函数-函数的多样化

首先说一下关于这个文件操作类的代码编写。下面是结果以及相应的代码。

批注:

$_FILES是PHP的全局数组

$_FILES["file"]["name"] - 上传文件的名称

$_FILES["file"]["type"] - 上传文件的类型

$_FILES["file"]["size"] - 上传文件的大小,以字节计

$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"] - 由文件上传导致的错误代码

"file"=上传文件的name

下面对代码进行一些增加,实现文件的移动以及一些限制。

当我们不对文件上传到类型做限制的时候,就比如选择文件后点击上传按钮,文件就会移动到新位置。这里是没有做限制,所以这也是从代码的角度反应了文件上传漏洞的本源。

批注:move_uploaded_file() 函数将上传的文件移动到新位置。

语法:move_uploaded_file(file,newloc)

file   必需。规定要移动的文件。

newloc     必需。规定文件的新位置。

但当我们做一些限制的时候,就比如只能上传gif,不能上传png。

这里我们对源码做一些修改。这时候上传png图片就会报错,也就不能成功上传。

这也就代表了文件上传漏洞当限制很严格的时候就不会存在这个漏洞。

还有一个就是编辑器上传(利用架构上传也是一样)。

这里用的ueditor这个编辑器,会发现不能上传.php结尾的文件,这个是编辑器自己过滤了。跟网站源码就没有任何关系。

综上所述第一个知识点

文件上传,一个网站有这个文件上传的功能,可以是开发者通过编写的代码赋予它文件上传的功能,也可以是通过编辑器赋予的功能(比如ueditor,kindeditor)。还可以是通过框架赋予的文件上传的功能。如果是开发者编写的代码赋予的,那么如果在源码里面没有写限制上传的类型之类的。便会存在文件上传漏洞,可如果这些限制卡的很死,比如就只能上传图片。那你就不能上传代码。也就没有了文件上传漏洞。可如果网站的文件上传功能是由编辑器或则框架赋予的。这些东西在网上都可以找到,是死的东西,封装好的。那么文件上传漏洞就和编辑器或则框架本身有关了。有了也是编辑器或则框架本身的关系。跟你网站源码没有任何关系,所以在处理文件上传漏洞的时候,找对方向很重要。

如果你对网站源码上传文件和编辑器上传文件的比较还比较模糊,这里给你进一步解释:

如果是编辑器代码上传的话他的代码他会自动过滤一些格式的文件上传,他就不是网站自身代码去验证了而是编辑器去验证,如果这个编辑器一旦没有漏洞,或者它的验证是很完整的话,那我们上传是没有办法的。

如果编辑器有问题那无关网站代码,他就是有问题的,因为是引用的。核心是在编辑器自身上。

如果是框架,也和编辑器类似。核心都在编辑器或者框架上。

下面是文件下载类的相关知识,分为直连下载和传参下载。

直连下载:

当你在输入框里面输入东西之后,他回去访问这个url地址,如果是个zip文件便会下载下来。如果是php等代码文件便会执行得到一个结果。

传参下载:

(源码我没看懂,小迪也没咋讲这个传参下载的源码,直连下载的可以看懂)

传参下载,类似于他会去修改请求的数据包,类似与burpsuite。这样就会造成结果不可控,即php等源码文件可能会被请求直接下载。

传参下载,源码可能会被猜解出来。导致源码泄露。

因此对于这两个下载方式,直连下载不会出现下载源码的情况,而这个传参下载则会有安全风险。

下面是文件以及文件夹删除的相关知识,内容比较少。

就涉及两个函数,内容比较少。一个是文件删除,一个是文件夹删除

两个都会造成源码被删除,网站崩溃的情景。

下面是文件读取和写入的相关知识

先说文件读取操作,比如你填进去个敏感文件的名字,是不是可以把数据库里面的配置文件读取出来,进而得到管理员账户和密码,或则是系统的一些配置文件。

然后就是这个文件写入,就是通过网站后门写入到网站目录里面去,造成的后门植入的风险。

下面是文件包含的相关知识

这个1.txt的文件里面是php代码,内容是phpinfo()。会发现当我们把x设为1.txt,它会执行里面的代码。也就是说包含代表执行,并且是用当前的脚本语言执行,所以也就会得到phpinfo这个函数的内容。

文件包含也分为本地文件包含和远程文件包含。远程文件包含就是把等号后面的值写个链接地址。

那为什么要有这个文件包含呢,上节课我们说了,连接数据库的那个,为了方便,搞一个配置文件,然后包含一下,那以后就不用每次都写了。比较省力。

相应的他的攻击也很简单,上传一个图片,这个图片地址自己肯定是知道的。然后久长时包含图片,图片里面由后门代码,前面的那句话,包含即执行。那不就攻击者所攻击了吗。防护也很简单,就是限制包含的文件类型。

所以说每个操作都不一样,对应的漏洞也不一样。

总结:web漏洞核心:

  1. 可控变量
  2. 特定函数--函数的多样化

首先这个可控变量,上面讲了一个直连下载,他为啥没有漏洞,因为他没有这个可控变量,你只能下载它有的东西。而其他的的都是因为有了可控变量,让攻击者有了可乘之机。比如说,文件读取的操作,代码里面没有了变量,你就只能读取1.txt这个文本,其他的不可以读取。那还会有漏洞吗?

其次这个特定函数,你会发现每个操作都会对应一个特定的函数,也因此会对应一个特定的漏洞。这个函数的多样化就是,能实现这个特定功能的不止一个函数,就比如文件包含里面的include和require。

你可以通过一个可控变量执行一个特定函数,来达到你的目的,这就是漏洞的产生!

网安之php开发第十三天相关推荐

  1. 网安之PHP开发第十六天

    #知识点: 1.JS前端验证-文件上传 2.JS-Ajax传递-登录-状态 3.JS-Ajax传递-购物-参数 1.文件上传 - 类型 - 过滤 设计:通过JavaScript进行文件后缀筛选验证 首 ...

  2. 网安之php开发第十二天

    本节课学习了一些简单的php开发以及用phpstrom连接数据库,并做一些操作. 首先学习该php阶段需要用到的四个工具自行下载.我这边建议飞哥用"伙伴神"这个公众号下.资源比较新 ...

  3. 网安之php开发第十四天

    #知识点: 1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS_x0005_&反射&存储 4.安全问题-XSS跨站&CSRF等 演 ...

  4. 网安之php开发第十七天

    #知识点: 1.基于TP框架入门安装搭建使用 2.基于TP框架内置安全写法评估 3.基于TP框架实例源码安全性评估 #入门-简单了解-安装&调试&入口&配置 理解:TP框架架构 ...

  5. 网安之php开发第十五天

    #知识点: 1.后台验证-登录用户逻辑安全 2.后台验证-COOKIE_x0005_&SESSION_x0005_ 3.后台验证-验证码_x0005_&_x0005_万能密码等 演示案 ...

  6. 开源网安实现高效、高精度的静态应用安全检测 -CodeSec

    来自安全牛的推荐SAST工具 随着科技的飞速发展,网络空间的主权完整和安全也成为影响国际关系的重要因素,国家之间的竞争也在由物理空间逐渐转向网络空间,国内的网络安全也面临着越来越多的风险和挑战. 根据 ...

  7. 培育人才,筑梦网安|开源网安软件安全开发与DevSecOps实训课圆满结束

    党的二十大报告指出,教育.科技.人才是全面建设社会主义现代化国家的基础性.战略性支撑.为深入贯彻党的二十大精神,为国家网络安全行业输送具有实践能力的专业优秀人才,开源网安职教中心派出资深专家团队为桂林 ...

  8. 仅以此纪念我一波三十折的2022保研路--上岸华科网安直博

    从开始准备报名夏令营到最后拿到最理想的offer,历时三个半月,饱受焦灼,但好在苦尽甘来. 一.个人情况 本科是某常被人遗忘的985,2019级信息安全专业,相对于计算机类的其他专业来说,属于妥妥的舒 ...

  9. 范渊免职——网安界其人曾异军突起又将“落幕”?

    范渊免职--网安界其人曾异军突起又将"落幕"? <南方都市报>曾发布过这样的新闻: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2K ...

最新文章

  1. 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
  2. 项目启动 ora-00942:_如何解决大型软件项目开发难题?唯快不破!
  3. Oracle的闪回特性之恢复truncate删除表的数据
  4. Acwing 1088.旅行问题
  5. 构建python应用_构建天气应用
  6. BCG-MFC 库对《支持重新启动管理器》都做了些什么
  7. 剑指 Offer 06. 从尾到头打印链表-力扣
  8. jQuery碎语(2) 事件
  9. HTML - 字符实体
  10. [Visual Studio] VS2012调试时很慢的解决方案
  11. eval函数pythonmopn_pytorch:model.train和model.eval用法及区别详解
  12. 高通SDX12:sar sensor AW9610x驱动移植
  13. 机器人运动学与动力学
  14. 电气绘图软件课程设计
  15. linux 断开远程vnc,Linux停VNC远程控制的使用方法
  16. Qt散点图、折线图、柱状图、盒须图、饼状图、雷达图开发实例
  17. BNUOJ 4140 Video Game Troubles
  18. 汽车Vin码识别/手机端扫描识别汽车车架号SDK
  19. fiddle 下载及配置
  20. 小明加密通道进入_「成都全接触」最新!成都8条地铁进展来了!年底还有5条铁路、9条通道!...

热门文章

  1. 天载优配简述指数放量轰动
  2. Bellman-ford(解决负权边)
  3. radius认证服务
  4. [LBS学习笔记3]redis geo地理位置查询分析
  5. 快速过熊掌号2.0新手任务了解熊掌号!
  6. sql server高级查询及更新操作二
  7. 软件定制开发与软件外包有什么区别 ?
  8. (转)对话架构师:短视频社区“美拍”的架构实战
  9. 关于android性能,内存优化 http://www.cnblogs.com/zyw-205520/archive/2013/02/17/2914190.html
  10. C++ std::pair的用法