【web-ctf】ctf-pikachu-暴力破解


burpsuite配置

  1. 火狐浏览器需要导入证书
  2. 如果无法抓到127.0.0.1的包,可以试试以下操作

暴力破解(Brute Force)

有效的字典:

  1. 常用的账号密码(弱口令),比如常用用户名/密码TOP 500等。
  2. 互联网上被脱库后账号密码(社工库),比如某平台泄露的用户信息。
  3. 使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码。

判断是否存在暴力破解可能性:

  1. 是否要求用户设置了复杂的密码
  2. 是否每次认证都使用安全的验证码
  3. 是否对尝试登陆的行为进行判断和限制
  4. 是否在必要的情况下采用了双因素认证

暴力破解漏洞测试流程:

  1. 确认登陆接口的脆弱性(爆破可能性)

比如:尝试登录——抓包——观察验证元素和response信息,判断是否存在爆破可能性。

  1. 对字典进行优化

根据实际情况对字典进行优化,提高爆破过程效率。

(1)小技巧:可以先在该平台注册一个账户,观察账户和密码的格式要求,然后删除字典中不符合要求的字符串,再进行爆破,会提高效率。
(2)小技巧:如果爆破管理后台,一般系统管理员的用户名为admin/administrator/root的几率比较高,可以先尝试这三个用户名。

  1. 工具自动化操作

1.基于表单的暴力破解

使用burpsuite工具中的intruder模块进行暴力破解:intruder模块使用教程

  1. 先随便输入一个username和password
    在这里插入图片描述

  2. 利用burpsuite进行抓包
    在这里插入图片描述

  3. 将抓到的包导入intruder模块(在空白处右键,选择send to intruder)
    在这里插入图片描述

  4. 选择需要暴力破解的变量和攻击方法

    从图中可以看出,intruder模块已经为我们自动筛选出了四个可以爆破的变量,因为我们只需要对username和password进行爆破,所以只要选择这两个变量即可。

    (1)点击右边的clear,删除选中的变量
    (2)再点击右边的add,将username和password选中
    (3)选择sniper攻击方式
    在这里插入图片描述

  5. 选择payloads方式并攻击

    (1)添加弱口令
    可以去网上下载弱口令文件(因为这是练习,所以我就随便添加了几个简单的弱口令)
    在这里插入图片描述

    (2)点击右上角start attack进行攻击
    在这里插入图片描述
    发现当password='123456’的时候,respond数据包的长度和其他的不太一样,因此我们可以重点观察这种情况。

  6. 查看异常情况的respond数据包

    发现这种情况下,返回数据包中有个login success的字段,可以判断该种情况就是正确的账号和密码组合,因此username=‘admin’,password=‘123456’
    在这里插入图片描述

  7. 修改数据包

    回到抓包界面,修改账号和密码,然后点击forward发送出去
    在这里插入图片描述
    观察到网页上出现了login success,表示登陆成功。
    在这里插入图片描述

2.验证码绕过(on server)

在这里插入图片描述

  1. 先随便输入一个username和password
    在这里插入图片描述

  2. 利用burpsuite进行抓包
    在这里插入图片描述

  3. 此时要测试该验证码会不会在服务端被及时销毁,我们先将数据包发送到重放模块(Repeater)
    在这里插入图片描述
    保持验证码不变,通过修改几次username或者password并进行重放,发现收到的回应数据包长度一致,因此推测回应数据包都是因为同一种原因无法登录(即username或password错误,并没有因为验证码错误导致无法登录),大致可以判断尝试登陆的这几次操作,服务器端都用的同一个验证码(验证码可以重复利用),因此我们只要保证验证码不变,对username和password进行爆破就可以了。

  4. 后面的操作和第一个基本一致,就不再赘述了。(只要保证不变验证码,对username与password进行爆破即可)

3.验证码绕过(on client)

  1. 先随便输入一个username和password和正确的验证码,然后再随便输入一个username和password和错误的验证码。观察二者区别。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

发现输入错误验证码时,网页弹出窗口,可以猜测是在前端生成和判断验证码,于是我们查看源码发现的确是在前端生成的验证码。

所以很有可能这个验证码并没有通过后端进行对比验证。我们对数据包进行重放,不输入验证码,发现返回数据中并没有提示“请输入验证码”,因此可以判断的确没有通过后端验证。
在这里插入图片描述

因此我们只需要截取数据包,然后直接进行爆破,就可以绕过前端的判断。

  1. 利用burpsuite进行抓包
    在这里插入图片描述
  2. 发送到intruder模块进行爆破,操作方法和第一个一样。客户端验证码与服务器端验证码区别在于,如果使用服务器端验证码,我们必须保证验证码是正确的,在这个基础上进行爆破。客户端验证码就不用保证验证码的正确性了,甚至删去验证码字段进行登录也是可以的。如图所示:
    在这里插入图片描述
    在这里插入图片描述

4.token(令牌)防爆破

什么是token

先说下结论:token并不能防止爆破。
我们可以从它的流程中推断出来:

使用token机制的身份验证方法,在服务器端不需要存储用户的登录记录。大概的流程:

1.客户端使用用户名和密码请求登录。
2.服务端收到请求,验证用户名和密码。
3.验证成功后,服务端会生成一个token,然后把这个token发送给客户端。
4.客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。
5.客户端每次向服务端发送请求的时候都需要带上服务端发给的token。
6.服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数7.据。(如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。)

第三步就存在漏洞了。

每次提交要验证token值(每次更新),表面上可以防止暴力破解,但后端每次产生的token以明文形式传到前端,漏洞就这样产生了,黑客可以在每次暴力破解之前,获取一下token值,然后填到字典里面,就可以进行暴力破解

  1. 查看网页源代码(按F12),发现里面有一个字段存储着token值
    在这里插入图片描述
  2. 用burpsuite抓取数据包
    在这里插入图片描述
    我们只需要暴力破解username与password,然后再获得对应的token值,一并爆破即可。

但是每次在暴力破解之前打开html找新的token再贴到burpsuite的相应位置就很麻烦,我们要考虑暴破时怎样才能带上正确的token值。我们可以利用intruder模块中配置payload为Recursive grep来对token进行递归提取。配置方法如下:

(1)首先先确定爆破变量为password 和 token
在这里插入图片描述

(2)然后对token变量选择负载类型为Recursive grep
在这里插入图片描述
(3)进入options进行配置,找到grep-extract模块,点击add,从网页源代码中选中token的位置,会自动生成正则表达式用于提取。
在这里插入图片描述
因为是一种递归操作,第二次爆破要依赖于第一次爆破后得到的token值,因此不能使用多线程,所以再配置一下线程。
在这里插入图片描述
(4)最后在为password配置一下字典,然后进行爆破即可。
在这里插入图片描述

5.总结

  1. 不安全的验证码- on client 常见问题

    (1)使用前端js实现验证码(纸老虎)
    (2)将验证码在cookie中泄露,容易被获取
    (3)将验证码在前端源代码中泄露,容易被获取

  2. 不安全的验证码- on server 常见问题

    (1)验证码在后台不过期,导致可以长时间被使用
    (2)验证码校验不严格,逻辑出现错误
    (3)验证码设计的太过简单和有规律,容易被猜解

  3. 防范措施

    (1)设计安全的验证码

     	1.在后端对验证码进行对比判断
     	2.判定验证码是否为空,是否正确
     	3.判定后销毁验证码
     	4.设置定时销毁验证码
    

    (2)对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时
    (3)必要的情况下,使用双因素认证

### 关于BUUCTF Web DVWA 100解题思路 对于DVWA(Damn Vulnerable Web Application),这是一个专门为教育目的设计的应用程序,旨在展示各种常见的Web漏洞及其利用方法。针对DVWA中的不同难度级别,每种挑战都提供了不同程度的安全防护措施。 #### SQL注入攻击案例分析 在处理SQL注入时,了解应用程序如何构建查询至关重要。例如,在某些情况下,如果输入未被适当过滤,则可以通过操纵URL参数来影响数据库查询的结果[^4]。这表明理解目标应用的数据结构以及其背后的逻辑非常重要。 #### 实战练习平台介绍 为了更好地理解和实践这些概念,可以使用像Pikachu这样的实战靶场环境来进行实验[^3]。这类平台通常包含了多种类型的漏洞供学员测试不同的攻击向量和技术手段。 #### HTTP头部相关题目解析 考虑到很大比例的CTF竞赛中的Web类目会涉及到HTTP协议头的信息泄露等问题[^2],因此掌握这一部分的基础知识同样不可忽视。当面对仅涉及HTTP头而不与其他复杂知识点混合的情况时,这些问题往往相对简单得多。 #### 提高技能的学习路径建议 想要精通此类题目并最终解决更复杂的挑战,应该遵循一个合理的学习路线图。可以从基础开始逐步深入到高级主题,并通过参与实际的比赛积累经验[^1]。 ```python # 示例代码用于说明SQL注入原理而非真实操作 import requests def test_sql_injection(url, param_name): payload = "' OR '1'='1" params = {param_name: payload} response = requests.get(url, params=params) if "success" in response.text.lower(): print("[+] Potential SQL Injection vulnerability detected.") else: print("[-] No obvious signs of SQL Injection.") test_sql_injection('http://example.com/vulnerable_page', 'id') ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值