网安之PHP开发第十六天
#知识点:
1、JS前端验证-文件上传
2、JS-Ajax传递-登录-状态
3、JS-Ajax传递-购物-参数
1、文件上传 - 类型 - 过滤
设计:通过JavaScript进行文件后缀筛选验证
首先我们进行文件上传操作的时候肯定会有对文件类型进行验证的东西,在前面我们也讲过这个源代码。而这个文件上传验证可以是php代码来实现,也可以是js代码来实现。
Js代码:
php代码:
php是后端语言,就好比你输入一个1,经过后端的php得到一个a,整个过程你只能看到一个a,你是看不到他的源代码的。而js代码不一样,他是前端语言,是可以直接在浏览器右键检查看到的。所以这两个的差异就体现出来了。由js代码编写的验证,是可以过滤的。这个验证就会直接失效。火狐浏览器怎么禁止javascript-百度经验 (baidu.com)。这个是链接,其他浏览器的禁用方法自己搜一下。禁用之后验证就会失效,所以上传文件的限制就没了。而php代码在服务器端,是没有办法过滤的。而判断是什么代码编写的,可以通过右键检查直接看代码,也可以通过看数据回显时间(看时间不太准确,毕竟这个东西跟网速有关)。
没禁用之前不可以上传php结尾的文件,禁用之后验证失效就可以上传了。
2、状态回显 - 登录 - 状态码
设计:通过Ajax传递数据进行用户登录验证
然后就是ajax进行验证的相关知识,这个ajax是由js开发的,可以认为是js里面进行数据交互的一个功能。既然js验证比较容易绕过,那这个ajax也一样,只不过方式不一样。
Ajax代码:
Ajax.php:
其中 js/jquery-1.12.4.min.js,这个是ajax需要引入的一个js文件,里面是封装好的一些函数。来让ajax实现数据的传递。还有就是res.infoCode会对infoCode(状态码)的值进行对接。
因为js和ajax是前端语言,在浏览器中,所以浏览器发送数据后,服务器进行返回数据包,然后通过浏览器的js,ajax代码进行解析。最终得到结果。而php则是直接得到结果,就算你把包改了,也没啥用,就直接自我安慰了。
登陆成功,infocode的值为1:
我们输入错误的账号密码,利用burp抓包,通过修改服务器的返回包,把0改成1,就可以实现登录。怎么抓返回的数据包呢,就是鼠标右键,点击下图中的按钮即可。这样一来,即使我们输入错误的账号密码也是可以成功登录。
重点:不是说验证代码是由js或则ajax写得就一定可以绕过,这要看登录网站的最终决定权在谁手里。看左侧图中,如果说登录网站后台的代码直接就在“alert('登录成功')”这一行后面,那么确实是成功绕过了,但如果不在,比如所在ajax.php这个里面那么就gg。也就是说如果这个“alert('登录成功')”就是简简单单告诉你成功登录了,那么屁用没有。(好像是说前端验证不太行,后端验证才行)
3、参数修改 - 购物 - 参数修改
设计:通过Ajax传递数据进行购物验证
设计1:商品价格以前端设置价格为准,数据接收价格后运算
设计2:商品价格以数据库对应价格为准,数据接收价格后运算
设计3:商品价格以数据库对应价格为准,数据只接受数量后运算
设计4:商品价格以数据库对应价格为准,数据只接受数量后做过滤运算
这里就是通过ajax传递数据进行验证,与上面的2状态会显的差不多,简单说一下。
案件背景:购买iphone,价格为8888。买东西就是看自己的钱和商品金额乘以商品数量。二者的比较。就能得知到底能不能购买成功。
设计1:这里的价格已经在前端设置好了,就是固定的8888,,本金就10000,那也就是说只能买一个,但是我么通过抓包,修改金额便可以想买多少买多少,比如把数据包中金额单价改成1元,那么就算我们买十台手机也是可以购买成功的。也可以通过修改返回的数据包,把状态码改成1,也是可以购买成功。这样显然是不行的,明显存在漏洞。我们接着看第二个。
设计2:这里的金额就不再是在前端规定好了,而是储存在数据库中,我么获取他的价格也是在数据库中获取。而最后能否购买成功,也是看金额乘以数量与自己的余额。和设计1没有什么本质区别,也是可以通过修改数据包来达到相应的目的,这里就不放代码截图,可以自己去资源库找一下。
设计3:这里的金额直接在后端固定死了,直接就是8888,也就是说你只能改数量了。但是你可以把数量改成小数或则负数。也是可以达到目的。也是存在漏洞。
设计4:这里对数量进行过滤,也就是说数量不可以是小数或则负数。这样来说是相对严谨的。
总结:php和js,ajax最大的区别就是说,一个在浏览器,一个在服务器,一个代码可以看到并进行修改。一个代码看不到。但并不是说可以修改就可以绕过,因为要看最后是以php代码产生的值为基准还是说以js代码产生的值为基准,如果说是js的值为基准,那么是可以的,相反便不可以。我觉得验证分为前端验证和后端验证,前端验证绕过的可能性比较大,后端的很难,然后就是说进入后台管理页面的那一行代码是由前端验证决定的还是后端验证决定的,就可以基本清楚能不能绕过了。
补充:可以通过看返回的数据包进行判断是什么代码进行验证,比如这个就是js的,像返回值中有json,code,msgbox这种的一般就是js的。
网安之PHP开发第十六天相关推荐
- 网安之php开发第十四天
#知识点: 1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS_x0005_&反射&存储 4.安全问题-XSS跨站&CSRF等 演 ...
- 网安之php开发第十五天
#知识点: 1.后台验证-登录用户逻辑安全 2.后台验证-COOKIE_x0005_&SESSION_x0005_ 3.后台验证-验证码_x0005_&_x0005_万能密码等 演示案 ...
- 公安部网安局公布2020年十大网络黑产案例
2020年,全国公安机关网安部门发起"净网2020"打击网络黑产犯罪集群战役,重拳打击为电信网络诈骗.网络赌博.网络水军等突出违法犯罪提供网号恶意注册.技术支撑.支付结算.推广引流 ...
- 网安之php开发第十二天
本节课学习了一些简单的php开发以及用phpstrom连接数据库,并做一些操作. 首先学习该php阶段需要用到的四个工具自行下载.我这边建议飞哥用"伙伴神"这个公众号下.资源比较新 ...
- 网安之php开发第十七天
#知识点: 1.基于TP框架入门安装搭建使用 2.基于TP框架内置安全写法评估 3.基于TP框架实例源码安全性评估 #入门-简单了解-安装&调试&入口&配置 理解:TP框架架构 ...
- js+dom开发第十六天
一.css常用标签及页面布局 1.常用标签 position(定位) z-index(定位多层顺序) background(背景) text-align(针对字符自动左右居中) margin(外边距) ...
- 网安之php开发第十三天
#知识点: 1.文件操作类代码编写 2.文件上传&下载&删除 3.文件内容&读取&写入 4.第三方编辑器引用实例 小迪博客-文件操作&上传&下载& ...
- 开源网安实现高效、高精度的静态应用安全检测 -CodeSec
来自安全牛的推荐SAST工具 随着科技的飞速发展,网络空间的主权完整和安全也成为影响国际关系的重要因素,国家之间的竞争也在由物理空间逐渐转向网络空间,国内的网络安全也面临着越来越多的风险和挑战. 根据 ...
- 仅以此纪念我一波三十折的2022保研路--上岸华科网安直博
从开始准备报名夏令营到最后拿到最理想的offer,历时三个半月,饱受焦灼,但好在苦尽甘来. 一.个人情况 本科是某常被人遗忘的985,2019级信息安全专业,相对于计算机类的其他专业来说,属于妥妥的舒 ...
最新文章
- CIR:2020年全球数据中心应用AOC市场达$42亿
- 抓豆瓣的电影评论数据
- tableau实战系列(三十八)-Tableau Server 端口耗竭的具体表象及如何避免端口耗竭
- 信息采集软件测试,Telegraf采集CPU数据,测试派详解
- ORACLE SQL笛卡尔集
- Docker创建Dockerfile脚本构建jdk1.8镜像并启动容器示例
- 二十四、数据挖掘时序模式
- java学习教程之代码块
- 计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)
- 谈谈 css 的各种居中——读编写高质量代码有感
- activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分
- linux下darknet指定opencv4编译安装
- android开发实践之1:安装部署环境设置
- java 反射机制及其应用
- 如何更好的使用大数据
- 车载娱乐系统 AppSupport
- 十大热门编程语言的介绍
- 合并两个有序链表(Java)
- 写论文,这些工具让你少踩坑!
- 哈希原理与常见哈希函数