某网站验证码绕过详解

admin 2023年11月16日08:49:53评论15 views字数 2153阅读7分10秒阅读模式

===================================

免责声明

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。

某网站验证码绕过详解

一、通过抓包找到验证码图片的链接

某网站验证码绕过详解

二、发现找到的图片和合展示的图片不一样,链接地址的图片是乱序,需要我们重新拼接

三、继续往上找,找到该图片链接的来源,发现在一个叫slidecode请求包的响应内容里面

某网站验证码绕过详解

四、代码实现获取图片链接地址

import requestsimport re#通过该地址获取验证码图片的地址url = 'https://XXXXX.com/authcode/slidecode'  # 替换为你要请求的URLheaders = {'User-Agent': 'Mozilla/5.0'}  # 可选,设置请求头response = requests.get(url, headers=headers)  # 发送GET请求响应内容 = response.text#获取网页的响应内容正则 = re.compile(r'url(([^)]+))')匹配结果 = 正则.findall(响应内容)#通过正则匹配获取图片的链接print(匹配结果[0])  # 输出响应数据print("整理后的结果:"+'http:'+匹配结果[0].replace('"',''))

运行结果:

某网站验证码绕过详解

五、知道图片链接,将图片保存到本地

图片链接='http:'+匹配结果[0].replace('"','')response = requests.get(图片链接, stream=True)with open("123.png", 'wb') as f:     f.write(response.content)

六、继续分析上面url的响应内容,发现一大堆类似坐标的东西,猜测这是每个错乱图片的正确位置

某网站验证码绕过详解

七、提取这些坐标

坐标=re.compile("class='gt_cut_fullbg_slice' style='background-position:(.*?)px (.*?)px",re.S|re.I)坐标xy=坐标.findall(响应内容)坐标xy=[[abs(int(xy[0])),abs(int(xy[1]))] for xy in 坐标xy]#将字符串改为数字print(坐标xy)运行结果:[[91, 75], [234, 0], [143, 75], [130, 75], [52, 0], [39, 75], [156, 25], [26, 50], [13, 25], [208, 75], [91, 50], [26, 75], [13, 50], [65, 75], [52, 50], [78, 0], [234, 50], [117, 25], [65, 25], [65, 0], [247, 50], [143, 50], [0, 0], [169, 50], [91, 25], [247, 75], [52, 25], [247, 25], [169, 0], [26, 0], [182, 75], [117, 0], [91, 0], [143, 0], [26, 25], [156, 75], [247, 0], [39, 25], [13, 0], [65, 50], [104, 0], [130, 0], [78, 75], [0, 50], [169, 25], [78, 50], [195, 0], [156, 50], [117, 75], [0, 25], [182, 50], [221, 75], [78, 25], [182, 0], [221, 0], [104, 25], [195, 25], [208, 25], [208, 50], [208, 0], [156, 0], [195, 50], [117, 50], [104, 50], [169, 75], [221, 25], [234, 75], [195, 75], [0, 75], [234, 25], [39, 0], [130, 25], [52, 75], [182, 25], [130, 50], [13, 75], [39, 50], [104, 75], [221, 50], [143, 25]]

八、将图片切割,并按正确顺序放回到原位

打开图片 = Image.open('123.png')# 将切片保存到列表图片列表 = []for p in 坐标xy:     if p[1] == 0:  # y的坐标为0,说明在第一行          图片列表.append(打开图片.crop((p[0], 0, p[0] + 13, 25)))     if p[1] == 25:  # y的坐标为0,说明在第一行          图片列表.append(打开图片.crop((p[0], 25, p[0] + 13, 50)))     if p[1] == 50:  # y的坐标为0,说明在第一行          图片列表.append(打开图片.crop((p[0], 50, p[0] + 13, 75)))     if p[1] == 75:  # y的坐标为0,说明在第一行          图片列表.append(打开图片.crop((p[0], 75, p[0] + 13, 100)))

新建图片 = Image.new("RGB", (260, 100))x = 0y = 0for i in 图片列表:     if x == 260:  # 从左贴到右了          x = 0          y += 25     新建图片.paste(i, (x, y))     x += 13新建图片.save("456.png")

原文始发于微信公众号(Web安全工具库):某网站验证码绕过详解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月16日08:49:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某网站验证码绕过详解http://cn-sec.com/archives/2209849.html

发表评论

匿名网友 填写信息