地址:https://www.ctfhub.com/#/skilltree
请求方式
预备知识
1.http请求样式以及服务器响应包的样式
具体可以在菜鸟教程中了解一下https://www.runoob.com/http/http-messages.html

2.curl命令的使用
这里简单列举几个:
①curl -i http://ip 查看http响应头
②curl -v http://ip 查看交互过程
③curl -X GET http://ip或者curl -X http://ip GET请求(发起http请求时默认是GET型)
④curl -X POST http://ip -d “参数” POST请求
注:这里的请求方式可以是常规的请求方式如GET、POST,也可以是自己定义的,前提是被服务端允许,区分大小写!
这里给出两个学习地址,根据需要自行了解
Windows中的curl命令:https://blog.csdn.net/wangjunji34478/article/details/35988223
Linux中的curl命令:https://www.cnblogs.com/duhuo/p/5695256.html
题解payload:curl -v -X CTFHUB http://challenge-74da4bfe747dae2a.sandbox.ctfhub.com:10080/index.php
302跳转
预备知识

意思就是该URI中的资源被临时移动,但URI不变
题解:直接抓包在重发器里发送就可以看到URI里面的内容了
cookie
预备知识
cookie:由后端服务器端创建保存在客服端一种数据库结构。浏览器请求和后端服务端响应都会携带创建的cookie来回传输。cookie在传输时存储在请求头和响应头中。
作用: 保存用户与后端服务器的交互状态。 这里顺便讲一下cookie和session的比较 cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。 具体了解:https://blog.csdn.net/weixin_44303465/article/details/89523719 题解:直接抓包,然后看到cookie: admin=0,在重发器中将0改为1就可以了,意思就是你的登陆状态为管理员
基础认证 预备知识 (1)HTTP基本认证
桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 “用户名+冒号+密码”用BASE64算法加密后的字符串放在http request 中的header Authorization中发送给服务 端, 这种方式叫HTTP基本认证(Basic Authentication) (2)HTTP基本认证的过程
第一步: 客户端发送http request 给服务器, 第二步: 因为request中没有包含Authorization header, 服务器会返回一个401 Unauthozied给客户端,并且在Response的 header “WWW-Authenticate” 中添加信息。 第三步:客户端把用户名和密码用BASE64加密后,放在Authorization header中发送给服务器, 认证成功。 第四步:服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端 题解:随意填写一个用户名和密码,如admin和admin,然后抓包,看到Authorization中的信息是一段base64的密文,解密后看到admin:admin,结合题目给的txt文件想到爆破 这里给出两种爆破方式
一:将给出的密码进行统一的base64加密,并另存为一个新的txt文件,代码如下:
import base64
dic_file_path = r"C:\Users\asus\Desktop\Else\10_million_password_list_top_100.txt"# 字典文件路径
with open(dic_file_path, ‘r‘) as f:
password_dic = f.readlines()
username = ‘admin:‘ # 用户名,默认admin
for password in password_dic:
str1=str.encode(username + password.strip())
encodestr = base64.b64encode(str1)
encodestr=str(encodestr)
encodestr=encodestr.strip(‘b\‘‘)
#encodestr=encodestr.replace("=","\=") #避免“=”被转译 #这一句我觉得不需要就注释掉了
print(encodestr)
注意:
这个地方要取消勾选!!!
二:爆破点选择46后面的

然后载入题目给的密码,并且勾选base64加密

响应包源代码 题解:F12查看源码或者抓包都可以直接看到flag
总结知识点:
1.http的请求方式,客户端请求包格式,服务端响应包格式,curl命令的使用。
2.响应包中的状态码对应的信息
3.了解cookie是什么,以及cookie和session机制的区别
4.http基本认认证 参考:
https://www.cnblogs.com/0yst3r-2046/p/12397073.html
https://www.runoob.com/http/http-status-codes.html https://www.cnblogs.com/anweilx/p/12410622.html