web前置技能-HTTP协议

ZJ Lv100

web前置技能-HTTP协议

前言

出自CTFHUB 练习场,比较官方的一个大型练习靶场

题目

题目-请求方式

HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源

打开靶场,根据题目需要入手的是HTTP的请求方式

看到网页上显示HTTP的提交方式是CTFHUB就会给我们flag,然后下面一行提示表示需要用index.php请求

image-20240915202012505

因为原页面就是index.php请求,所以直接抓包即可

image-20240915202702082

然后GET改为CTFHUB

image-20240915203925037

image-20240915203939085

这样flag就直接出来了,确实是前置技能哈哈哈(ฅ´ω`ฅ)

题目-302跳转

HTTP临时重定向

题目中提示需要用到302临时重定向跳转

在HTTP协议中,302 Found是一种临时重定向状态码,它表示请求的资源已经被临时移动到了由Location头部给出的URL。这个URL可能是新的位置,也可能是请求的资源的另一个版本。这个状态码的主要目的是将用户的请求重定向到新的URL,以便他们能够获得完整的资源。

打开靶场,点击Give me Flag会发现一直只跳转到本网页,就说明确实需要配合重定向来结解题

image-20240915204346059

先用F12(ctrl+U)大法看看网页源码

image-20240915205115281

看到链接应该是Index.php,但每次点击都只会跳转到index.html,只需要临时抓包不放包就可以防止网页302

点击链接,我们用BP抓包,再发送给repeater(可以理解为发送包后又临时抓包但不返回到浏览器页面的功能)

image-20240915205435134

可以看到send后是一个302的请求,所以才会被重定向

通过查询,还有另一种方式就是cmd命令里的curl命令

在cmd中

1
curl -v http://challenge-62083e00fdc21e52.sandbox.ctfhub.com:10800/index.php

注意是原本的网页.php

image-20240915205703202

然后就会返回原本的文件头,而不会被浏览器解析

curl命令用法

Cookie欺骗、认证、伪造

打开靶场看到提示只有admin能够拿到flag,再根据题目是cookie的伪造,所以这道题从cookie下手

image-20240916005118438

用BP抓包看看

image-20240916005704097

很明显的看到cookie里面的admin为0,那把它改为1不就成了吗,恭喜,这道题你做出来了

image-20240916005755371

题目-基础认证

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证

image-20240916005910601

这道题给了我们一个附件,打开附件是一串字符,加上题目可以合理推测是用基础爆破来解题

image-20240916010010509

打开靶场看到有链接,直接点开会,会弹出一个验证框叫我们输入账号密码

image-20240916010021706

image-20240916010747334

直接抓包看看

image-20240916010522890

然后返回包的头部有提到admin用户,所以后续猜测使用admin用户进行爆破

image-20240916020529442

里面有个Authorization,合理推断其值就是账号密码的加密形式,加密段的后面有==说明是base64加密,直接在线解密试试

这里了解一下base64的加密规则,不够4个字节的用等号=补充

image-20240916010723083

和我输入的账号密码一样,那么我们就可以开始爆破了

后面是关于BP软件的使用,如果没有用过的可以当提前预知,之后可以慢慢学,先做了解

  • 先把数据包发送到intruder

image-20240916011224974

  • 先clear工具默认的爆破点位

image-20240916011343770

  • 再选中字段添加爆破点

image-20240916011438064

  • 选择sniper攻击方式,因为我们只有一个攻击点,只有密码字典,合理猜测账号是admin

    BP攻击方式

    Sniper 狙击手 – 只有一个攻击点

Battering ram 攻城锤 – 两个攻击点,但传入的爆破参数相同

Pitchfork 草叉 – 两个攻击点,传入两个爆破参数

Cluster bomb 榴霰弹 – 具备前三种攻击方式,两个攻击点,爆破参数相互乘积即第二字典被反复使用或同一字典被反复使用(适合集中爆破–不清楚哪个该是密码还是账户)

image-20240916012324649

</div>

image-20240916011533984

  • 进入payloads页面传入字典

image-20240916012520071

  • 将密码的格式粘贴在这里

    对于这个密码格式如何得到有多种方法
    1. 用BP自带的功能,在Payload ProcessingAdd中的Add Prefix输入admin:,由于需要的是Base64加密,所以需要在下面对payload进行加密

      image-20240916021756299

      image-20240916013852023

    2. 用脚本直接一步到位,再复制到paylaod settings

      1
      2
      3
      4
      5
      6
      7
      import base64
      with open('passwd.txt', 'r') as file:
      lines = file.readlines()
      with open('base64.txt', 'a') as f:
      for line in lines:
      line=base64.b64encode(line.encode()).decode()
      f.write(f'{line}\n')
  • 然后就可以开始爆破了

image-20240916013923711

  • 发现一个都跑不出来

image-20240916014245240

网上有说是加密结果不能带有==,其实并不是,只是因为在BP里面的=会被转义而已,不要被误导了,不然你解一辈子都解不出来

建议去看官方的writeup ,我是测试了半天最后去看官方的,真的服了网上的某些帖子了=_=

  • 需要关闭下面的URL-encode,不然你会看到 base64 之后的 = 会被转成 %3d ,你就算爆破到天荒地老也不会出来

img

  • 再次Start Attack后,按 Status 排序,看到状态码出现200,即爆破成功

image-20240916020821868

  • 可以看到下面正常返回了flag

image-20240916020835063

题目-响应包源代码

HTTP响应包源代码查看

打开靶场,根据题目要求我们查看源代码,靶场打开也是空白的,那就F12(ctrl+U)大法吧

image-20240916022546590

然后就在源码里面很直白的告诉了你flag (๑•́ ₃•̀๑)

image-20240916022716123

总结

这一篇主要就是关于HTTP协议的几个点,从请求方式到网页响应码,再到cookie与加密认证,最后到网页源码,这些都是之后有可能遇到的小知识点,除了BP的使用可能比较困难,其他的确实算是入门级别的,继续加油吧,后面还有更有挑战性的题等着

不要放弃!!!有时候一道题做一天都有可能的!!!

题目在这里 路径为web->web前置技能->HTTP协议

  • Title: web前置技能-HTTP协议
  • Author: ZJ
  • Created at : 2024-09-15 00:00:00
  • Updated at : 2024-12-11 01:21:06
  • Link: https://blog.overlordzj.cn/2024/09/15/ctf/writeup/web/ctfhub/web前置技能-HTTP协议/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments