前言

图片验证码是为了防止恶意破解密码、刷票、论坛灌水等才出现的,但是你有没有想过,你的图形验证码竟然可能导致服务器的崩溃?

利用过程

这里以phpcms为例,首先需要找一个图形验证码。

将图片拖动到浏览器中将得到该图形验证码的链接:

将链接拖出来咱们分析一下:

http://127.0.0.1/phpcms/api.php?op=checkcode&code_len=4&font_size=20&width=130&height=50&font_color=&background=

code_len=4是验证码的字符的个数

font_size=20是验证码的大小

width=130是验证码的宽

height=50是验证码的高

如果将参数font_size、width、height均设置为1000将会出现什么情况呢?

可以发现验证码的形状已经改变,证明这个参数是会随着我们的更改而更改的,而且在改成1000时,整个页面的加载速度明显变慢,大家请想,如果都改为10000甚至更高会发生什么事情? 服务器会不会一直在处理我们所请求的图片?

此时我们上神器burp来检验一下

当设置为1000时:

当设置为10000时:

处理所用的时间明显增长,我们再看看在发起这个请求时CPU有什么反应:

CPU有一个明显的峰值,那当我们使用python去不断进行请求的时候又会发生什么?这个是正常情况下的CPU占用率:

当我们启动python程序的时候CPU的占用率:

可见,我们请求的验证码对服务器产生了重大的影响。

代码分析

根据请求包我们跟进到 \api\checkcode.php:

在第12行和第17行可以看到,仅仅将验证码的长宽通过get方式接受,没有任何其他的过滤,在第13行和第18行也仅仅只对最小值进行了限制,并没有对最大值进行限制,所以就造成了这个验证码的漏洞。

总结一下这个漏洞的利用点:

1.图片长宽等可控

2.后端没有对图片的最大大小进行限制

解决方案

1.对接受的参数进行最大值的控制,或者固定值处理

2.使用固定大小的验证码

来自FreeBuf.COM

【web 安全测试思路】图形验证码对服务器的影响的更多相关文章

  1. Web渗透测试思路整理

    信息收集: 域名/IP 子域名列表 whois: 注册地址,注册人,联系方式等 whois反查: 同ip有哪些站点(旁注),同一个注册人注册了哪些域名 社工注册人信息 指纹识别: 操作系统及版本 数据 ...

  2. 常见的web测试功能点测试思路

    常见的功能点的测试思路: . 新增 或 创建(Add or Create) ) 操作后的页面指向 )操作后所有绑定此数据源的控件数据更新,常见的排列顺序为栈Stack类型,后进先出 ) 取消操作是否成 ...

  3. WEB安全新玩法 [6] 防范图形验证码重复使用

    在完成关键业务操作时,要求用户输入图形验证码是防范自动化攻击的一种措施.为安全起见,即使针对同一用户,在重新输入信息时也应该更新图形验证码.iFlow 业务安全加固平台可以加强这方面的处理. 某网站系 ...

  4. 户外物理渗透:终端机,客户端的web测试思路

    现在的客户端界面越做越好看了,很多用到了web技术,轻便.界面炫.更新快,但是这样web的缺点也就出来了,就是不稳定,容易受用户等因素影响. 因为很多客户端web是内嵌的,内部通信,所以很多对安全的考 ...

  5. Java Web项目使用图形验证码 — Kaptcha

    一.验证码介绍 生成的主要方式: 1.使用Java原生的方式,其中包含了Servlet.AWT.ImageIO的使用: 2.使用开源库,例如Jcaptcha.Kaptcha...: (各图形验证码开源 ...

  6. 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...

  7. Web安全测试学习手册-业务逻辑测试

    i春秋作家:Vulkey_Chen 首先感谢朋友倾璇的邀请 http://payloads.online/archivers/2018-03-21/1 ,参与了<web安全测试学习手册>的 ...

  8. WEB安全测试要点总结

    一.大类检查点: 二.测试项详细说明 上传功能 绕过文件上传检查功能 上传文件大小和次数限制 注册功能 注册请求是否安全传输 注册时密码复杂度是否后台校验 激活链接测试 重复注册 批量注册问题  登录 ...

  9. Web安全测试指南--认证

    认证: 5.1.1.敏感数据传输: 编号 Web_Authen_01_01 用例名称 敏感数据传输保密性测试 用例描述 测试敏感数据是否通过加密通道进行传输以防止信息泄漏. 严重级别 高 前置条件 1 ...

随机推荐

  1. python导包问题,这一篇就够了

    解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...

  2. TDOA 之数据测试

    许久没有更新TDOA了,近期断断续续编写学习,开始测试TDOA数据.记录如下 1 测试场地,如下所示,4个基站摆放位置是一个正方形,变成为1.6m,被测试标签放置正中心. 2 获得原始数据 test_ ...

  3. E:nth-last-child(n)

    E:nth-last-child(n) 语法: E:nth-last-child(n) { sRules } 说明: 匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效.大理石平台维修 ...

  4. Oracle Linux 6.4 LVM中误删VG之恢复过程

    一.项目背景描述 1.OSS现网测试数据库因大量小事物频繁提交运行非常缓慢.经分析为DS3950存储所在磁盘I/O存在瓶颈,大量等待事件,性能受限.另外,开发同事没有优化意识,没将小事物做成批量提交方 ...

  5. codevs 4244 平衡树练习

    二次联通门 : codevs 4244 平衡树练习 Splay实测指针占用空间大约是数组的3倍, 且时间上也慢了差不多1s 数组版评测记录如下 指针版评测记录如下     以上数据仅限这一个题, 对于 ...

  6. vim命令整理

    最近使用vim比较多,整理一下!

  7. kubectl 日常命令 备忘

    目录 kubectl 常用命令 自动补全 Kubectl命令概览 常用命令分类 常用命令 声明式资源对象管理 查看资源状态 容器管理 集群管理 常用命令英文缩写 kubectl 常用命令 自动补全 使 ...

  8. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  9. java——反射

    http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html

  10. SCHED_FIFO与SCHED_OTHER调度机制

    疑问 两个线程分别有不同的调度策略,一个SCHED_FIFO,一个SCHED_OTHER,按照之前的理解,SCHED_FIFO实时线程一定会占用CPU一直运行,导致SCHED_OTHER的普通线程得不 ...