前言
CTFHub->Web->Web前置技能->HTTP协议->Writeup
1.请求方式
题目分析:
# Use CTF**B Method,Iwill give you flag
也就是告诉你,用`CTF**B`的请求方式去访问就会给flag
姿势1:curl命令
姿势2:burp
我这里选的curl命令,因为简单嘛
请求成功,flag回显在了窗口中
2.302跳转
题目分析:
点击 "Give me flag"
发现有302跳转
于是可以想到用burp去抓包
然后丢到repeater模块重发
最后在响应报文中发现flag:
3.Cookie
发现自己权限不够,常规思路都是抓包,看看有没有可疑的参数
果然如我们想的一样
Cookie:admin=0
直接丢进repeater,把0改成1即可得到flag:
4.基础认证
HTTP基本认证(维基百科)
简介
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户名和密码的一种方式。
在进行基本认证的过程里,请求的HTTP头字段会包含Authorization
字段,形式如下: Authorization: Basic <凭证>
,该凭证是用户和密码的组和的base64编码。
电文认证过程
(1).客户端请求(没有认证信息)
GET /private/index.html HTTP/1.0
Host: localhost
(2).服务端应答
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
(3).客户端请求(有认证信息)
用户名“"Aladdin”,密码, password “open sesame”
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Authorization消息头的用户名和密码的值可以容易地编码和解码。
(4).服务端的应答
HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476
题目分析
现在差不多明白基本认证的概念了,开始分析题目:
思路分析:
用户名:admin
附件:10_million_password_list_top_100.txt
说明我们需要爆破
用burp抓包,发现我们输入的密码被加密了
很明显是base64
把加密后的密文解密
发现是我们刚输入的密码和admin组合之后再进行base64加密
所以现在就需要写一个脚本对附件中的密码批量进行base64加密
贴一个别人的脚本:
然后丢进burp的intruder模块爆破
爆破成功,访问正确的密码的数据包,即可得到flag!
5.响应包源代码
查看源码即可得到flag
结语
到此http协议模块就结束了.