网安之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的,像返回值中有jsoncodemsgbox这种的一般就是js的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GitHub是一个基于Web的代码托管平台,它提供了版本控制和协作功能,让开发者可以方便地共享和管理代码。在GitHub上,有很多与网安相关的项目,这些项目致力于保护网络安全、防止黑客攻击和提高系统的安全性。以下是一些常见的GitHub网安项目: 1. OWASP(开放式Web应用程序安全项目):OWASP是一个致力于提高Web应用程序安全性的国际组织。他们在GitHub上维护了一系列开源项目,包括安全工具、漏洞测试和安全指南等。 2. Metasploit:Metasploit是一个广泛使用的渗透测试框架,它提供了一系列工具和资源,帮助安全专家评估和增强系统的安全性。Metasploit在GitHub上有一个官方仓库,开发者可以在这里获取最新的代码和贡献自己的改进。 3. Snort:Snort是一个开源的入侵检测系统(IDS),它可以监测网络流量并检测潜在的攻击行为。Snort的代码托管在GitHub上,开发者可以参与到项目中,改进和定制自己的IDS规则。 4. Nmap:Nmap是一个网络扫描和主机发现工具,它可以帮助安全专家评估网络的安全性。Nmap的源代码也在GitHub上开放,用户可以自由地访问和贡献代码。 5. Security Shepherd:Security Shepherd是一个教育性的Web应用程序,旨在帮助开发者学习和理解常见的Web安全漏洞。它提供了一系列的挑战和实验,供用户测试和提高自己的安全技能。Security Shepherd的代码也在GitHub上开源。 这些项目只是GitHub上众多网安项目的一小部分,你可以通过在GitHub上搜索关键词来找到更多与网安相关的项目。希望这些信息对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值