验证码爆破绕过

作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于它用途

一,验证码目的:

区分用户是计算机和人
证明自己的身份,手机短信验证码,微信登录等
大多数的网站都会在很多地方设置各种验证码.
防止用户破解密码,刷票等,防止黑客对某一个特定的注册用户进行爆破。

二,验证码种类:

传统字符验证码:
由数字或者汉字组成的图片,通过添加各种噪点增加识别难度,可通过OCR技术进行破解
当验证码只有4位,可直接爆破数字验证码。
如果是6位,在半小时内无限制提交也可以暴力破解。

图片验证码:
相同的技术,只是改成了图片让人来识别:例如12036的验证码。

手机验证码:
通过手机短信验证用户操作,一般为6位数字

极限验证码:
通过拖动滑块来验证,是一种最新的验证技术。

三,验证码绕过方法:

前端验证: 网站不进行后端验证,相当于没有,关闭js脚本,通过burp抓包进行爆破
验证码不进行校验: 随便输入验证码就可以通过验证。
验证码的重复使用: 一个验证码可多次使用,也会判定验证码正确。
验证码可以为空: 通过抓包,可以通过修改登录参数user=admin&passwd=123456 &yzm=1166改为user=admin&passwd=123456即可绕过验证
验证码不过期:验证码没有过期时间,就可以通过爆破进行验证码绕过
验证码cookie: 验证码会通过cookie返回给我们,通过查找cookie即可进行验证
万能验证: 输入0000 或者000000 就直接绕过
验证码的控制:通过修改URL中的传参,可以随意修改验证码是多少。

图像验证码识别:
二值化 :把不需要的信息去除,只剩下需要识别的文字,让图片变成 2进制点阵
通过py进行二值化数字识别,输出二维码

from PIL import Image
import pytesseract

img = Image.open("D:/aa/666.png")
#img.show()

img2 = img.convert('L')
#转换为灰度模式
#img2.show()

threshold = 150
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
img3 = img2.point(table,'1')
#图片改为bmp,只有黑白,也就是只有0,1
#img3.show()

def depoint(img3):
    """二值化后的图片进行降噪"""
    pixdata = img3.load()
    #print(pixdata)
    w,h = img3.size
    for y in range(1,h-1):
        for x in range(1,w-1):
            count = 0
            if pixdata[x,y-1] > 0:
                count = count +1
            if pixdata[x,y+1] > 0:
                count = count+1
            if pixdata[x-1,y] > 45:
                count = count+1
            if pixdata[x+1,y] > 0:
                count = count+1
            if pixdata[x-1,y-1] >0:
                count = count+1
            if pixdata[x-1,y+1]>0:
                count = count+1
            if pixdata[x+1,y-1]>0:
                count = count+1
            if pixdata[x+1,y+1]>0:
                count = count+1
            if count>4:
                pixdata[x,y] = 1
    return img3

img4 = depoint(img3)
#img4.show()

aaa = pytesseract.image_to_string(img4)
print(aaa)

字符分割算法:
基础的扫描线法就可以分割,
从最左侧开始从上到下扫描,没有遇到文字的像素,就往右一个像素继续扫描,遇到有文字的像素,就记录当前横坐标位置,继续往右扫描
突然没有文字像素,就到了两个字符空白的部位。

四,验证码加强方法:

增加验证码的长度
限制用户当天使用验证码次数
设置验证码的过期时间
使用最新的验证码技术等等。

原创文章 35 获赞 58 访问量 5886

猜你喜欢

转载自blog.csdn.net/weixin_43221560/article/details/105266496
今日推荐