web前置技能-HTTP协议

web前置技能-HTTP协议
前言
出自CTFHUB 练习场,比较官方的一个大型练习靶场
题目
题目-请求方式
HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源
打开靶场,根据题目需要入手的是HTTP的请求方式
看到网页上显示HTTP的提交方式是CTFHUB
就会给我们flag,然后下面一行提示表示需要用index.php
请求
因为原页面就是index.php
请求,所以直接抓包即可
然后GET
改为CTFHUB
这样flag就直接出来了,确实是前置技能哈哈哈(ฅ´ω`ฅ)
题目-302跳转
HTTP临时重定向
题目中提示需要用到302临时重定向跳转
在HTTP协议中,302 Found是一种临时重定向状态码,它表示请求的资源已经被临时移动到了由Location头部给出的URL。这个URL可能是新的位置,也可能是请求的资源的另一个版本。这个状态码的主要目的是将用户的请求重定向到新的URL,以便他们能够获得完整的资源。
打开靶场,点击Give me Flag
会发现一直只跳转到本网页,就说明确实需要配合重定向来结解题
先用F12(ctrl+U)大法看看网页源码
看到链接应该是Index.php
,但每次点击都只会跳转到index.html
,只需要临时抓包不放包就可以防止网页302
点击链接,我们用BP抓包,再发送给repeater(可以理解为发送包后又临时抓包但不返回到浏览器页面的功能)
可以看到send后是一个302的请求,所以才会被重定向
通过查询,还有另一种方式就是cmd命令里的curl命令
在cmd中
1 | curl -v http://challenge-62083e00fdc21e52.sandbox.ctfhub.com:10800/index.php |
注意是原本的网页.php
然后就会返回原本的文件头,而不会被浏览器解析
题目-Cookie
Cookie欺骗、认证、伪造
打开靶场看到提示只有admin
能够拿到flag,再根据题目是cookie的伪造,所以这道题从cookie下手
用BP抓包看看
很明显的看到cookie里面的admin为0,那把它改为1不就成了吗,恭喜,这道题你做出来了
题目-基础认证
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证
这道题给了我们一个附件,打开附件是一串字符,加上题目可以合理推测是用基础爆破来解题
打开靶场看到有链接,直接点开会,会弹出一个验证框叫我们输入账号密码
直接抓包看看
然后返回包的头部有提到admin用户,所以后续猜测使用admin用户进行爆破
里面有个Authorization
,合理推断其值就是账号密码的加密形式,加密段的后面有==
说明是base64加密
,直接在线解密试试
这里了解一下base64的加密规则,不够4个字节的用等号=补充
和我输入的账号密码一样,那么我们就可以开始爆破了
后面是关于BP软件的使用,如果没有用过的可以当提前预知,之后可以慢慢学,先做了解
- 先把数据包发送到
intruder
- 先clear工具默认的爆破点位
- 再选中字段添加爆破点
选择sniper攻击方式,因为我们只有一个攻击点,只有密码字典,合理猜测账号是
admin
BP攻击方式
Sniper 狙击手 – 只有一个攻击点
Battering ram 攻城锤 – 两个攻击点,但传入的爆破参数相同
Pitchfork 草叉 – 两个攻击点,传入两个爆破参数
Cluster bomb 榴霰弹 – 具备前三种攻击方式,两个攻击点,爆破参数相互乘积即第二字典被反复使用或同一字典被反复使用(适合集中爆破–不清楚哪个该是密码还是账户)
</div>
- 进入payloads页面传入字典
将密码的格式粘贴在这里
对于这个密码格式如何得到有多种方法
用BP自带的功能,在
Payload Processing
的Add
中的Add Prefix
输入admin:
,由于需要的是Base64加密,所以需要在下面对payload进行加密用脚本直接一步到位,再复制到
paylaod settings
1
2
3
4
5
6
7import 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')
然后就可以开始爆破了
- 发现一个都跑不出来
网上有说是加密结果不能带有==,其实并不是,只是因为在BP里面的=会被转义而已,不要被误导了,不然你解一辈子都解不出来
建议去看官方的writeup ,我是测试了半天最后去看官方的,真的服了网上的某些帖子了=_=
- 需要关闭下面的
URL-encode
,不然你会看到 base64 之后的=
会被转成%3d
,你就算爆破到天荒地老也不会出来
- 再次
Start Attack
后,按Status
排序,看到状态码出现200
,即爆破成功
- 可以看到下面正常返回了flag
总结
这一篇主要就是关于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.