首页
学习
活动
专区
圈层
工具
发布

记录一次利用业务设计漏洞的精彩实战测试

想挖这的漏洞,还得给他先改好BUG。。。帮助这个cms实现功能,我才好测试功能是否有漏洞利用。。。...又比如验证码压根不显示,为了方便测试,我只能注释掉检验验证码是否正确的代码。。所以,对于这套cms,新手随便挖几个洞就可以了,代码能力不强的要想练习改BUG技能,可以认真对待这套CMS。...言归正传,在对baojiaadd.php的测试中,我发现同一用户可以反复的发布报价信息,虽然发布报价信息需要得到管理员的审核,但是并没有对发布报价信息的用户做出数量限制或者其他的限制(普通验证码在一些大佬眼中可以直接利用机器学习识别的...,我这里由于验证码的功能并没有实现,所以我就直接后台注释了验证码,在此前提下,有了后面的攻击实验),那么这就给“调皮”的用户留下可乘之机。...如果说硬要加上验证码,那么CSRF的攻击以我的技术就无法实现了,因为我不知道如何在CSRF的时候,还能同时获得正确的验证码(ajax的思路可以吗?)。

79930

PHP实现网络刷投票

没有及时放出原因有二,一是因为博客域名备案没有下来,没有心情写东西。二是最主要的,及时放出对案例网站有严重的损害,不是我等IT人应有的。 Ps:刷票有风险,使用需谨慎。...一年前刚刚接触PHP的时候,完全不知道做,现在第一反应就是Curl。 废话不多说了,直接上代码。 在一天只可以投一次 2、填写来源,网站会判断请求的来源是否合法路径 其他就是Curl的常规了选项了。 如何防治? 本人才疏学浅,仅作跑砖引玉。...1、限制IP 本文已经破解 2、限制来源 本文已经破解 3、验证码。作为最反人类的发明之一,可以使用这个拥有高大上的名字的全自动区分计算机和人类的图灵测试。...6、手机 投票时输入手机号和短信验证码,成本高,单位不愿意。用户发送某某指令到某某,用户自掏腰包,用户不愿意。 目前来说,只有验证码,手机并且验证手机的有效性是最好的防治措施。

1.7K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手机没网了,却还能支付,这是什么原理?

    动态口令技术原理 首先如果我们需要使用 Google Authenticator,我们需要在网站上开启二次验证功能,以 Google 账号为例,在设置两步验证的地方可以找到如下设置: 当我们点击设置,将会弹出一个二维码...,以此用来比较动态码的正确性。...,服务端查询数据库获取到用户对应的密钥,然后使用同样的算法进行处理生成一个动态码,最后比较客户端上传动态码与服务端生成是否一致。...另外在一次性动态口令方案,需要双方基于同样的秘钥,所以服务端需要明确知道这背后正确用户。以上面的登录场景为例,登录过程输入用户名,服务端就可以根据这个在数据库中查询相应的密钥。...但是在付款码的支付场景中,支付过程仅仅传递一个付款码,就可以向相应的用户扣款。不用想,这个付款码这串数字一定包含相应的用户信息。

    1.6K30

    8年开发,连登录接口都写这么烂...

    前言 这是一篇转载的,文章,我直接给答案吧,登录的时候更好的方式是rsa加密你的登录数据传输,特别是客户端,用c打包,做得更好还可以公私钥置换一次,码字不一定有时间,有时不小心就透露一些多赚钱的招 ?...但是我在和很多工作经验较短的同学面试或沟通的时候,发现很多同学虽然都有在简历上写:负责项目的登录/注册功能模块的开发和设计工作,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。...只要网站是暴露在公网的,那么很大概率上会被人盯上,尝试爆破这种简单且有效的方式:通过各种方式获得了网站的用户名之后,通过编写程序来遍历所有可能的密码,直至找到正确的密码为止 伪代码如下: # 密码字典...验证码 有聪明的同学就想到了,我可以在它密码错误达到一定次数时,增加验证码校验!...防止用户名被遍历 有些网站在注册时,在输入完用户名之后,会提示用户名是否存在。

    1.2K20

    8年开发,连登陆接口都写这么烂...

    但是我在和很多工作经验较短的同学面试或沟通的时候,发现很多同学虽然都有在简历上写:负责项目的登录/注册功能模块的开发和设计工作,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。...只要网站是暴露在公网的,那么很大概率上会被人盯上,尝试爆破这种简单且有效的方式:通过各种方式获得了网站的用户名之后,通过编写程序来遍历所有可能的密码,直至找到正确的密码为止 伪代码如下: # 密码字典...验证码 有聪明的同学就想到了,我可以在它密码错误达到一定次数时,增加验证码校验!...当用户输入密码次数大于3次时,要求用户输入验证码(最好使用滑动验证) 当用户输入密码次数大于10次时,弹出手机验证,需要用户使用手机验证码和密码双重认证进行登录 手机验证码防刷就是另一个问题了,这里不展开...防止用户名被遍历 有些网站在注册时,在输入完用户名之后,会提示用户名是否存在。

    49930

    8 年开发,连登陆接口都写这么烂...

    但是我在和很多工作经验较短的同学面试或沟通的时候,发现很多同学虽然都有在简历上写:负责项目的登录/注册功能模块的开发和设计工作,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。...只要网站是暴露在公网的,那么很大概率上会被人盯上,尝试爆破这种简单且有效的方式:通过各种方式获得了网站的用户名之后,通过编写程序来遍历所有可能的密码,直至找到正确的密码为止 伪代码如下: # 密码字典...验证码 有聪明的同学就想到了,我可以在它密码错误达到一定次数时,增加验证码校验!...当用户输入密码次数大于3次时,要求用户输入验证码(最好使用滑动验证) 当用户输入密码次数大于10次时,弹出手机验证,需要用户使用手机验证码和密码双重认证进行登录 手机验证码防刷就是另一个问题了,这里不展开...防止用户名被遍历 有些网站在注册时,在输入完用户名之后,会提示用户名是否存在。

    41820

    你的登录功能都做到位了吗?

    但是我在和很多工作经验较短的同学面试或沟通的时候,发现很多同学虽然都有在简历上写:负责项目的登录/注册功能模块的开发和设计工作,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。...只要网站是暴露在公网的,那么很大概率上会被人盯上,尝试爆破这种简单且有效的方式:通过各种方式获得了网站的用户名之后,通过编写程序来遍历所有可能的密码,直至找到正确的密码为止 伪代码如下: # 密码字典...验证码 有聪明的同学就想到了,我可以在它密码错误达到一定次数时,增加验证码校验!...当用户输入密码次数大于3次时,要求用户输入验证码(最好使用滑动验证) 当用户输入密码次数大于10次时,弹出手机验证,需要用户使用手机验证码和密码双重认证进行登录 手机验证码防刷就是另一个问题了,这里不展开...防止用户名被遍历 有些网站在注册时,在输入完用户名之后,会提示用户名是否存在。

    31420

    你的登录接口真的安全吗?

    但是我在和很多工作经验较短的同学面试或沟通的时候,发现很多同学虽然都有在简历上写:负责项目的登录/注册功能模块的开发和设计工作,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。...只要网站是暴露在公网的,那么很大概率上会被人盯上,尝试爆破这种简单且有效的方式: 通过各种方式获得了网站的用户名之后,通过编写程序来遍历所有可能的密码,直至找到正确的密码为止 伪代码如下: # 密码字典...验证码 有聪明的同学就想到了,我可以在它密码错误达到一定次数时,增加验证码校验!...比如我们设置,当用户密码错误达到 3 次之后,则需要用户输入图片验证码才可以继续登录操作: 伪代码如下: fail\_count = get\_from\_redis(fail\_username) if...防止用户名被遍历 有些网站在注册时,在输入完用户名之后,会提示用户名是否存在。

    71920

    一次短信验证码“撞库”,发生的惨案!!!

    注册验证逻辑 要说到这次事故,我们先来看看通过短信验证码注册的逻辑。下面两张图,就很好的说明了代码的逻辑。 a. 用户点击页面发送短信按钮,想服务端发起发送验证码的请求。 b....; } // 调用短信验证码方法 sendCode((string)156xxxx2305); 上面只是一个伪代码,在实际中要考虑添加缓存和发送短信验证码的一致性,不能出现给用户成功发送了验证码,但是缓存每天就成功...如果存在验证码,则进行对比。看缓存中的验证码和提交的验证码是否一致,如果一致就进行注册。不一致就返回客户端,验证码错误。 d. 短信验证码一致,用户账号自动注册的同时把对应的短信验证码进行删除。...上面的两张图就是同事小张的一个代码逻辑,大家看到这里,可以先想想这种逻辑是不是正确的?为什么会出现文章开头说的情况?你平常在写短信验证码的服务时,是不是这么写的?...在后来项目复盘也发现这个问题,同一个IP在一个时段,大量请求发送验证码的请求。推测是攻击者,购买的的手机号,进行发送,否者也不会出现部分用户投诉的情况。 c. 接下来,就是验证环境。

    2.8K50

    一文带你彻底理解Linux的各种终端类型及概念

    但是有的时候,机器上并没有看到显示器或者键盘接口,但是却有一个串口,想操作这台机器想必只能通过这个串口来进行了,这个时候,串口另一端的那台电脑的显示器键盘也叫做终端。...那么系统中有没有一个叫做自己的全局变量呢?当然有,那就是/dev/tty,也就是说,无论你在哪个终端下工作,当你往/dev/tty里写东西的时候,它总是会马上出现在你的眼前。   ...本文的最后,我来简单说下关于getty和login相关的东西。 前面在讲终端发展历史的时候说到过,到了多终端时代,每一个终端必须绑定一个用户,只有登录成功的用户方可获得一个终端。...所谓的登录呢,就是输入用户名和密码,如果输入正确,则会给你一个Bash(或者别的Shell)让你操作计算机,如果输入不正确,则让你继续输入…   getty给了让你登录并且继续输入的机会!...在计算机最初被放在车间大小的屋子里的年代,可能把屋子的门禁做好以及将屋子外的鉴权系统做好显得比后来的多用户login更为重要,只有在后来,终端不再属于计算机了,终端与计算机分离了,用户也和终端分离了的时候

    83510

    一文带你彻底理解Linux的各种终端类型及概念

    但是有的时候,机器上并没有看到显示器或者键盘接口,但是却有一个串口,想操作这台机器想必只能通过这个串口来进行了,这个时候,串口另一端的那台电脑的显示器键盘也叫做终端。...那么系统中有没有一个叫做自己的全局变量呢?当然有,那就是/dev/tty,也就是说,无论你在哪个终端下工作,当你往/dev/tty里写东西的时候,它总是会马上出现在你的眼前。...本文的最后,我来简单说下关于getty和login相关的东西。 前面在讲终端发展历史的时候说到过,到了多终端时代,每一个终端必须绑定一个用户,只有登录成功的用户方可获得一个终端。...所谓的登录呢,就是输入用户名和密码,如果输入正确,则会给你一个Bash(或者别的Shell)让你操作计算机,如果输入不正确,则让你继续输入… getty给了让你登录并且继续输入的机会!...在计算机最初被放在车间大小的屋子里的年代,可能把屋子的门禁做好以及将屋子外的鉴权系统做好显得比后来的多用户login更为重要,只有在后来,终端不再属于计算机了,终端与计算机分离了,用户也和终端分离了的时候

    2.8K20

    一文带你彻底理解Linux的各种终端类型及概念

    但是有的时候,机器上并没有看到显示器或者键盘接口,但是却有一个串口,想操作这台机器想必只能通过这个串口来进行了,这个时候,串口另一端的那台电脑的显示器键盘也叫做终端。...那么系统中有没有一个叫做自己的全局变量呢?当然有,那就是/dev/tty,也就是说,无论你在哪个终端下工作,当你往/dev/tty里写东西的时候,它总是会马上出现在你的眼前。...---- 本文的最后,我来简单说下关于getty和login相关的东西。   前面在讲终端发展历史的时候说到过,到了多终端时代,每一个终端必须绑定一个用户,只有登录成功的用户方可获得一个终端。...所谓的登录呢,就是输入用户名和密码,如果输入正确,则会给你一个Bash(或者别的Shell)让你操作计算机,如果输入不正确,则让你继续输入… getty给了让你登录并且继续输入的机会!...在计算机最初被放在车间大小的屋子里的年代,可能把屋子的门禁做好以及将屋子外的鉴权系统做好显得比后来的多用户login更为重要,只有在后来,终端不再属于计算机了,终端与计算机分离了,用户也和终端分离了的时候

    1.8K40

    经验贴 | 如何从业务实际需求出发,参与 5.9K star 的 Node.js 开源项目

    \n\n## 发现问题\n\n用内部基于autocannon封装的工具进行几次压测之后,我发现了第一个问题:autocannon默认情况下把由于压力过大而返回的兜底页面也当做正确返回来统计了,因为此时的状态码依然是...对于我们的场景来说,正确返回的判断条件应该是 正确的状态码 + 正确的页面内容。...\n\n我们的压测工作陷入了短暂的僵局。\n\n## 确认问题\n\n既然发现了开源项目的问题,我们此时就需要确定一下几点:\n1. 这个问题是不是只有我们的业务场景才出现,对于普遍用户来说是伪需求?...项目官方是否已经在安排解决?...\n\n通过排查代码我们可以得到原因,在之前的实现中发起下一次请求的逻辑阻塞在正确性验证之后,也就是说只有本次正确性验证完毕,才会发起下一个请求。

    55240

    密码重置姿势总结​

    response包时,发现验证码在response包中,这种情况通常是开发为了方便判断用户输入的验证码是否和响应中的一致。...验证码爆破 验证码效验的时候,没有做次数时间限制(四位数十分钟是可以爆破出来的),可以使用枚举来猜测正确的验证码。使用burp进行爆破就好。如果状态码和字节长度一样可以正则匹配关键字。...修复建议:采取错误次数限制,输入错误验证码五次后锁定用户半小时 ? 验证码未效验 服务器只判断验证码是否正确,没有判断是否与用户匹配。利用我的手机号接受验证码可以用过验证。...在发送短信的时候修改为自己的手机号接受验证码即可通过 修改密码处id值可替换 修改密码时,没有对当前用户进行判断且根据id的值来修改用户密码,修改自己的密码,修改数据包中用户对应的ID值,便可修改他人密码...修复建议:判断用户id值是否一致 ? ? 未效验用户字段的值 在整个重置面的过程中只对验证码和手机号做了效验,未对后面设置新密码的用户的身份进行判断,攻击者可修改用户身份来重置他人密码。

    2.4K10

    关于移动终端的短信安全分析

    短信是公众接收信息的重要途径,也是网站登录页面识别用户本人的一个有效手段。网站通过用户手机号及对应手机号接收到的短信验证码,来识别一个有效用户,用户则通过官方短信验证码登录进网站。...防范建议 保护私人信息:身份证号、手机号、银行卡号、各种平台的账号都是个人敏感信息,注意一切需要获取这些信息的合法性,登录网站平台的时候注意是否官网,尽量不要点击非官方的链接,而是手动输入官网地址。...防范建议 网站方面:建议网站的登录页面部门,在点击获取验证码环节增加图片验证码的步骤,可以过滤掉机器自动化点击网站验证码的部分。...另外:在网页登录页面的获取验证码部分,增加时间限制,1分钟内或者5分钟内就发一次验证码,可以防止网站被轰炸机利用,给用户不好的用户体验。...图3.1:丢失设备定位消息(来自微博截图) 另一种案例是,攻击者利用伪基站,假冒官方号码,如某某银行,发送一条带有虚假链接的短信,如图3.2所示的一条短信,短信中的网址仿照正确网址,在被攻击者点击后输入正确的信息

    6.9K20

    那些年绕过的反爬手段

    但现在心态变了,如果遇到一个没有验证码的网站,我都会尽量抓得慢一点。毕竟都是搞编程的,你如果把人家抓急了,逼得他改网站,改完后自己还得跟着改,冤冤相报何时了?...比如之前某汽活动页上面的验证码会隐藏在页面中,点击提交时会用js判断验证码是否正确。还有的网站验证码就是摆设,提交的表单中根本就没有验证码参数。...所以笔者认为,使用中文做验证码并对图像做混淆粘连处理后就可以算是强验证码了(话不能说太满,毕竟我只是个数学很差的专科生)。...因为对于某些网站,它们会将某些请求头中的ip看作用户的真实ip,比如X-Forwarded-For, X-Real-IP, Via。对于这种网站该怎么做不用我多说了吧。...以上是暂时想到的一些经验,希望能有所帮助,同时也希望大家在抓数据的时候能够手留情别抓得太狠,如果把一个数据源抓废了对大家都不好,正好那句话说的,IT人何苦为难IT人。

    1K40

    如何避免一步步走向平庸?

    我给不少人提过有关写东西的建议,建议他们在刚开始写的时候不用总写大话题,可以从小的「点」写起,锻炼自己写东西的感觉和能力。...我们过去心心念念地希望用户来用我们开发的产品,产品的最终目标是拥有更多用户。 现在,这个目标没有变,但用户不再主动「来用我们开发的产品」,而是要我们发现用户在哪里,然后把内容做到哪里。...跳槽不是不可以,但需要强调的是,为了蝇头小利而频繁跳槽并不是一件好事。 2. 要尽早建立正确的金钱观——谈钱并不庸俗,赚钱也并不可耻,金钱是衡量一个人产生价值的最好标准。...因为这个世界上有太多人本末倒置,舍不得在知识、时间和健康上投入,而宁愿在人生竞赛中步步落后。 记住!年轻的时候,投资自己才是收益最大的事情。 △ 读者笔记 1. ...一个被野心驱动的人,会极度自律、昼度夜思、不知疲倦,因为他不是想赢,而是必须赢。 2. 一个人越是在默默无闻的时候,越要沉下心来积累代表作。

    23410

    【redis】应用场景:共享会话和手机验证码

    共享会话 实现思路 如果每个应用服务器,维护自己的会话数据,此时彼此之间胡共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了 为了解决这个问题,可以使用 Redis 将用户的...手机验证码 实现思路 生成验证码 用户输入手机号 点击获取验证码(限制:1min 之内,最多获取 5 次) 检查验证码 把短信收到的验证码这一串数,提交到系统中,验证是否正确 伪代码实现 生成验证码...String 发送验证码(phoneNumber) { key = "shortMsg:limit:" + phoneNumber; // 设置过期时间为 1 min //使用 NX,只在不存在...说明要么之前没有设置过手机验证码;要么次数没有超过 5 次 String validationCode = 生成随机的 6 位数的验证码(); validationKey = "validation...return vaildation; } 验证验证码 // 验证用户输入的验证码是否正确 bool 验证验证码(phoneNumber, vaildation) { vaildationKey = "

    26010

    如何设计测试用例?

    如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功。...如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登录失败,并且提示信息正确。...忘记用户名和忘记密码的功能是否可用。 前端页面是否根据设计要求限制用户名和密码长度。 如果登录功能需要验证码,点击验证码图片是否可以更换验证码,更换后的验证码是否可用。...刷新页面是否会刷新验证码。 如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性。 用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面。...下次,面试的时候你如果从这些方面去回答,还怕拿不到offer吗? 当然这些都是需要经验积累的,但是并不妨碍我们在设计测试用例的时候可以从多个角度进行考虑,比如安全,性能,兼容性等等。

    67710
    领券