web-前置技能(HTTP协议)-CTFHub

news2024/11/24 9:59:11

前言

在众多的ctf平台当中,作者认为ctfhub对于初学者来说,是入门平台的不二之选。ctfhub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。

作者正在更新ctfhub系列,希望小伙伴们多多支持。

注:CTFHub是动态flag,每个人每次都不一样,要自己动手哦。

请求方式

一、wp(write up题目解析)

<法一>、题目显示现在的HTTP方法是get,让我们使用CTF**B方法就可以获得flag,要猜到其实就是CTFHUB;直接抓包改请求方法,点击go,返回200ok.

<法二>、curl的使用:cmd输入:

curl -v -X CTFHUB url/index.php

得到flag。

二、考点

对HTTP请求方法的应用

curl的使用

三、相关知识

1、curl的应用

Web安全常用工具 (持续更新)-CSDN博客(具体内容请看作者另一篇文章)

(参考文献:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html)

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。Curl不只是一个编程用的函数库,这个命令本身,就是一个无比有用的网站开发工具。
它支持多种协议,下面举例讲解如何将它用于网站开发。

1)查看网页源码
直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短)。

2)显示头信息
`-i`参数可以显示http response的头信息,连同网页代码一起。

3)显示通信过程
`-v`参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。

4)发送表单信息
发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。

curl example.com/form.cgi?data=xxx


POST方法必须把数据和网址分开,curl就要用到--data参数。

curl -X POST --data "data=xxx" example.com/form.cgi


如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。

5)HTTP动词
curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。

6)cookie
使用`--cookie`参数,可以让curl发送cookie。
  

curl --cookie "name=xxx" www.example.com


至于具体的cookie的值,可以从http response头信息的`Set-Cookie`字段中得到。
`-c cookie-file`可以保存服务器返回的cookie到文件,`-b cookie-file`可以使用这个文件作为cookie信息,进行后续的请求。

7)HTTP认证
有些网域需要HTTP认证,这时curl需要用到`--user`参数。

2、HTTP协议(详细内容请看下文)

HTTP的工作原理-CSDN博客

HTTP属于无状态协议,有get、post等请求方法

1)HTTP包组成

由起始行、头部、实体(协议包要传输的内容)组成。
上述图片第1行为起始行:内容是请求方法、uri、HTTP协议版本
2-8行为head头部; 
头部下来空一行为实体所在,上述图片为get包,所以实体为空

2)HTTP回包(response)的状态响应码

图片上箭头所指为状态响应码所在位置;

常见状态码对应的意思总结如下:

302跳转

一、wp

<法一>

bp拦截,点击give me flag,重发,得到flag。(挂上 BurpSuite 之后访问 index.php )

<法二>使用curl:直接用 curl 访问 index.php 即可得到 flag
因为curl默认是不跟随重定向的,所以可以直接通过F12访问出现302的url,放进cmd里即可得到flag。写法:

curl  -v  url/index.php

二、考点

HTTP状态码(见上文),302重定向

三、相关知识

1、302

302是HTTP协议中的一个状态码(Status Code)。可以简单的理解为该资源原本确实存在,但已经被临时改变了位置。因此说明在我们抓取的包里会出现一个新的url链接来进行跳转

2、302与301的区别

302跳转是暂时的跳转,服务器返回302代码,搜索引擎认为新的网址只是暂时的。301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。

3、 HTTP中的重定向和请求转发的区别
转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
1)转发过程:客户浏览器发送http请求——>web服务器接受此请求——>调用内部的一个方法在容器内部完成请求处理和转发动作——>将目标资源发送给客户;
在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
2)重定向过程:客户浏览器发送http请求——>web服务器接受后发送302状态码响应及对应新的location给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——>服务器根据此请求寻找资源并发送给客户。
在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
重定向,其实是两次request。第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

也就是说在这个题中我们要获取第一次从服务器得到的信息,即index.php,而不是重定向后的跳转到的index.html。

Cookie

一、wp

<法一>提示中说,只有admin身份可以获得flag,抓包,cookie信息的admin=0(false),我们尝试将其改为1(true),扔进repeater模块,进行改包,将cookie身份改为admin,得到flag。

<法二>Web控制台修改
打开开发者工具并选择控制台,修改管理员 admin 的 Cookie 值为 1(True),刷新浏览器网页,得到此题flag

<法三>存储探查器修改

打开开发者工具并选择存储,列表选择Cookie存储,修改admin值0为1,刷新浏览器网页,得到此题flag

<法四>用curl:

curl -v -b ‘admin=1’  url

二、考点

Cookie欺骗、认证、伪造

三、相关知识

1、cookie

HTTP Cookie 又称饼干 ,是服务器发送给用户浏览器并保存在本地的一个数据,如果下一次访问浏览器向服务器发送请求时就会被传送到服务器中。经常用于浏览器网页保持登录或记录数值,例如账户密码、用户行为需求等。

简单的理解:cookie是一个key-value结构的文本信息,他的作用就类似于"身份证",我们通过浏览器向服务器发起请求,如果服务器需要记录用户的状态,他就会给该用户发送一个cookie,浏览器会把它保存下来,等下次我们要再次访问这个服务器的时候,他就会直接带着cookie过去,完成用户认证。
简单的例子:我们要访问一个资源,该网站让我们进行登录,当我们登录成功后,浏览器会记录下该网站颁发给用户的cookie,当用户再次访问这个网站时,浏览器会携带着cookie一起发送给服务器,服务器完成验证,我们直接进去了,不需要在登录页面再登陆一次。

详细信息还是作者的HTTP的工作原理-CSDN博客

2、admin(管理员)

管理员跟普通用户相比具有更高的权限,在渗透测试中获取管理员权限是我们的目标之一。

基础认证

一、Wp(密码爆破题)

首先,打开题目所给界面。这里他给了我们一个题目附件。

下载后解压缩,发现是一个密码本(常用密码)。

点开题目链接,这里提示我们,这是你的flag,还有一个可以点击的选项。

点击,然后弹出来了一个登陆界面,这里老规矩,打开burpsuite,进行抓包。

思路是好的,但没什么用,抓不出来有用的东西。

再到登录页面看看

然后进行一下测试,因为目前没有更多的思路,所以先随便输入用户名和密码,这里输的是admin和admin(要爆破就爆破有价值的账号,管理员账号是必尝试的,admin是管理员的意思,许多开发人员为了方便,就以admin为管理员账号名)

然后进行抓包,发现了Authorization:后面有一串BASE64的编码(要注意base64的格式,以后需能准确判断出来)

 尝试进行解码,看看到底是啥。随便找个base64的在线解码平台,如Base64 在线编码解码 | Base64 加密解密 - Base64.us

解码这个base64后,发现是我们刚才输入的用户名和密码,用:进行了隔开,即admin:admin。

Repeater后,给了提示“admin”,这里应该模拟的是我们爆破admin账户的过程,所以我们一开始的思路是对的,我们继续猜测用户名是admin,所以我们得用字典爆破出管理员账号的密码。

再回到bp界面。

把抓到的包发送到爆破模块intruder。选择刚才的base64字符串点击add(add选项在右边),记住,不要吧“basic”也选上了,只有admin:admin(用户名、密码所在位置)是我们需要攻击的位置。

选择sniper(狙击手)。

然后点击上面的payloads。(payload是有效载荷的意思,我的理解是攻击语句)

这里又是常规的爆破选项,导入密码本。点击payload options的Load…,选择刚刚下载并解压的密码本。

因为这里我们假定用户名是admin,所以应该在下面payload processing(载荷处理)里加上前缀admin:,切记要加 :  ,因为要爆破的base64字符串是“用户名:密码”, 点击payload processing里的add,选择Add prefix(添加前缀)。

 

写上admin:

添加完前缀,这还不够,大家还记得之前用户名、密码都是base64编码的吧。但密码本是正常的字符串,如果会python可以试一下重新生成密码本,把密码本编码一下。

不会python也不要紧,大家同上一步再去添加。这里选择encode(编码),选择base64。然后OK。

搞完这个,再记得去掉payload encode(有效载荷编码),不然又爆不出来

然后就可以起飞了。

出现了出现了(没出现也有可能是超时了,作者就因为写文档超时,又花了50金币重开了,哭)。

然后复制粘贴,到数据包的base64编码位置,再send,直接OK。

要是想体验登录的感觉,base64解码后也可以登录

二、考点

  • HTTP 基础认证
  • 脚本编写
  • 密码爆破

三、相关知识

1、基础认证(basic认证):
Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。
当request第一次到达服务器时,服务器没有认证的信息,服务器会返回一个401 Unauthozied给客户端。认证之后将认证信息放在session,以后在session有效期内就不用再认证了。

2、bp爆破的使用

(后续会有ctfhub技能树的密码口令专门讲bp的爆破,那时候会系统阐述)

又发现了burp的新功能,可以增加爆破字典的规则,增加前缀、后缀、编码…等

响应包源代码

一、wp

具体请看作者发布的攻防世界的题view-source,解法相同。

二、考点

HTTP响应包源代码查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系&#xff0c;帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

小米开放式耳机好不好用?小米、南卡、倍思、飞利浦热门开放式耳机一周测评!

​开放式耳机正成为潮流&#xff0c;它们不仅佩戴舒适&#xff0c;音质也出色&#xff0c;特别受到音乐发烧友和运动爱好者的追捧。作为一名多年的数码测评博主&#xff0c;我也早就对开放式耳机感兴趣了&#xff0c;只是最近一直没时间来好好测评下&#xff0c;今天一下子买了…

计算机网络实验二:FTP服务器配置

ftp服务器配置 要求&#xff1a; 1. 学会配置FTP服务器、能在FTP客户端进行下载和上传文件 2. 进一步熟悉ipconfig和ping命令 3. 进一步理解FTP工作原理和流程 1、FTP服务器配置&#xff08;FileZilla Server&#xff09; 第一步安装FileZilla Server&#xff0c;直接下一步…

二、安装vmtools

1、 介绍 vmtools 安装后&#xff0c;可以让我们在 windows 下更好的管理 vm 虚拟机。可以设置 windows 和 centos 的共享文件夹 当时当我们发现安装虚拟机工具位置是灰色的 右击打开终端 在终端输入命令 yum list installed | grep open-vm-*yum list installed 命令会列出…

TikTok代理IP哪里找?

对于那些希望通过社交媒体打造个人品牌的人来说&#xff0c;TikTok是现在热门的平台&#xff0c;他的流量与曝光不可小觑&#xff0c;相信很多跨境营销会选择他进行多账号营销。问题是&#xff0c;TikTok多账号很容易遇到封禁问题&#xff0c;那么如何解决&#xff1f; 一、什么…

如何查看1688阿里巴巴热销选品数据?

✅路径&#xff1a;店雷达选品中心—1688选品库—选择类目 选品前先选类目&#xff0c;初步定位符合自己产品方向后再去分析市场&#xff0c;想看全市场的品类就选择一级类目&#xff0c;也有二三级类目细分选择&#xff0c;根据商家经营目标而定 接着选择想看的市场统计周期&…

吸毛效果好的宠物空气净化器分享,希喂、霍尼韦尔、米家实测

说起宠物空气净化器&#xff0c;几年前我可能会一脸鄙夷&#xff1a;为啥要花这种智商税冤枉钱&#xff1f; 直到之前养了一只猫&#xff0c;被家中乱飞的浮毛和滂臭的异味搞到头晕&#xff0c;于是作为i一个养宠的家电测评博主&#xff0c;索性对宠物空气净化器这玩意做了超级…

教你批量在文件名后面加文字,5个方法超简单

教你批量在文件名后面加文字~在日常办公与项目管理中&#xff0c;文件的规范性与统一性至关重要。它们不仅是信息传递的载体&#xff0c;更是团队协作效率的基石。面对海量的文件资料&#xff0c;如何确保每个文件都能迅速被识别并归类&#xff0c;成为了一个不容忽视的问题。为…

基于QT(C+++Mysql)实现的带GUI的图书管理系统

图书管理系统总体设计报告 图书管理系统概述 本次项目设计并实现了一个精简的多用户图书管路系统。应用后端通过与 MySQL 进行连接实现对数据的管理。用户可以通过界面实现登陆、注册、借书、还书等操作。管理员可以通过登陆界面实现对用户和书籍的管理&#xff0c;具有添加/…

微机原理与接口技术--绪论

1.早期硬件系统组成 1.微处理器&#xff08;中央处理器&#xff09;&#xff08;CPU&#xff09;&#xff1a; 微型计算机的核心部件&#xff0c;它负责执行指令、进行算术逻辑运算和控制计算机的各个部件协同工作。CPU 的性能直接决定了计算机的运行速度和处理能力。例如&…

SSTI模板注入+CTF实例

参考文章&#xff1a; 一文了解SSTI和所有常见payload 以flask模板为例-腾讯云开发者社区-腾讯云 (tencent.com) python-flask模块注入(SSTI) - ctrl_TT豆 - 博客园 (cnblogs.com) ssti详解与例题以及绕过payload大全_ssti绕过空格-CSDN博客 1. SSTI&#xff08;模板注入&…

C语言基础语法——数值表示

进制 进制也就是进位制&#xff0c;是人们规定的一种进位方法对于任何一种进制—X进制&#xff0c;就表示某一位置上的数运算时是逢X进一位 十进制是逢十进一&#xff0c;十六进制是逢十六进一&#xff0c;二进制就是逢二进一&#xff0c;以此类推&#xff0c;x进制就是逢x进位…

CANoe 中控制外部程序的启动与停止

在汽车电子测试和开发中&#xff0c;CANoe 是一个强大的工具&#xff0c;能够模拟和测试各种网络协议。为了增强其功能&#xff0c;开发者常常需要在 CANoe 中启动和停止外部程序。本文将介绍如何通过 CANoe 的系统变量和脚本功能实现这一目标&#xff0c;并结合批处理文件来管…

深信服上网行为管理AC无法注销在线用户

下图用户认证成功后无法注销 很多入网的用户都是使用的这个账号 针对单个IP强制注销也不生效 解决步骤&#xff1a; 接入管理-用户管理-用户绑定管理-用户绑定 删除绑定免认证的配置 删除后所有用户会强制注销掉&#xff0c;重新登录即可 可添加主页联系方式帮忙远程解决问…

vue使用table实现动态数据报表(行合并)

<template><div class"previewTable"><h2>***项目研发数据报告</h2><table id"previewTable" width"100%"><tr><th>项目名称</th><td colspan"6">{{ resultData.proName }}<…

Linux_kernel中断系统13

一、温故知新 1、字符设备编程框架 什么是字符设备&#xff1f; 在Linux操作系统中文件类型为.c文件&#xff0c;称为字符设备文件 按字节访问 访问的顺序是固定的 1&#xff09;struct cdev结构 实现一个硬件字符设备的驱动程序时&#xff0c;实际上就是实例化一个stru…

闪迪U盘误删的数据该怎么恢复呢?3个方法轻松解决

闪迪是一家全球知名的美国公司&#xff0c;也是全球最大的闪存数据存储卡产品供应商&#xff0c;其中&#xff0c;闪迪U盘作为其主要产品之一&#xff0c;因其便携性、大容量和高速传输能力而深受用户喜爱。然而&#xff0c;在平时存储重要数据的时候&#xff0c;会因为我们一系…

Ngin入门套餐

快速了解Nginx 一、代理1.1 正向代理1.2 反向代理1.3 正向代理和反向代理的区别 二、Nginx负载均衡策略2.1 轮询&#xff08;Round Robin&#xff09;2.2 加权轮询&#xff08;Weighted Round Robin&#xff09;2.3 IP 哈希&#xff08;IP Hash&#xff09;2.4 最少连接&#x…

C语言 | Leetcode C语言题解之第462题最小操作次数使数组元素相等II

题目&#xff1a; 题解&#xff1a; static inline void swap(int *a, int *b) {int c *a;*a *b;*b c; }static inline int partition(int *nums, int left, int right) {int x nums[right], i left - 1;for (int j left; j < right; j) {if (nums[j] < x) {swap(…

Spring17——Spring事务简介、使用事务实现模拟转账业务

38-Spring事务简介 相关概念 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败Spring事务作用&#xff1a;在数据层或业务层保障一系列的数据库操作同时成功或同时失败 数据层有事务我们可以理解&#xff0c;为什么业务层也需要处理事务呢&#xff1f;举个简…