三个功能:
一、文件上传-JS前端验证
对文件上传的后缀名进行验证,符合要求才允许上传,可以由PHP胡总和JS实现,两者的区别在于,PHP代码验证我们无法看到代码,只能进行黑盒测试;JS验证的话验证代码是可以看到的,相当于白盒测试
判断有没有JS验证:
①审查代码
②看反应时间,马上反应说明可能是JS验证,因为不涉及与后端数据进行交互
·浏览器禁用js,相当于没有过滤了就可以直接上传
二、状态回显-Ajax传递数据验证
ajax是js用来传输数据的类型,使用ajax:
请求->返回->ajax验证->结果
意义在于,如上文说到使用JS能在审查元素看到审查规则,如果使用ajax就可以把代码封装起来,之后文件包含使用即可,不会暴露代码
(回头学)
三、参数修改-购买逻辑漏洞
使用Ajax传递数据进行购物验证
1.商品价格以前端价格为准,数据接收价格后运算
抓包,修改价格;修改状态码。就是典型漏洞,实现零元购
2.商品价格以数据库对应价格为准,数据接收价格后运算
3.商品价格以数据库对应价格为准,数据只接受数量后运算
修改数量为负数,绕过
4.商品价格以数据库对应价格为准,数据只接受数量后做过滤运算
数量只能为大于或者等于1的整数
前端验证导致的密码找回漏洞:
比如:在逍遥模拟器打开某金融app,监听。要使用重置密码漏洞。
·首先注册正确的账号,抓包抓住正确的验证码回显信息,保存好
·找回密码,发送验证码(机主会收到信息)
·抓包发现验证码不正确,用刚才保留的正确信息替换,发现绕过验证,实现密码找回
判断小窍门:
看返回报文格式,比如看到有json、code、msgbox可以猜测是使用了前端接收数据处理数据验证,就需要检查一下有没有能攻击的可能
