当前位置: 首页 > news >正文

太原搭建网站的公司哪家好网页设计代码

太原搭建网站的公司哪家好,网页设计代码,景安香港主机可以做几个网站,wordpress wp_is_moblile()前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…

前言

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

作者更新了CTFHub系列,希望小伙伴们多多支持。

作者的CTFHub技能树汇总:

CTFHub技能树Web汇总-CSDN博客

基础知识

看完文章,在最底下就有flag。

这篇文章写的不错,本来还想总结一下JSON Web Token,但这篇其实已经把用到的知识都讲了,弄懂这篇就够了。

敏感信息泄露

JWT 的头部和有效载荷这两部分的数据是以明文形式传输的,如果其中包含了敏感信息的话,就会发生敏感信息泄露。试着找出FLAG。格式为 flag{}。

是一个登录框,随便输入,登录

在存储里看到token了

用base64解密一下,可以看到我们账号密码直接显示了,这就是敏感信息泄露

FLAG也直接显示了,注意要复制正确,别把FL处的“}“也复制了

(这个解法并不是很好,一会我们有别的方法)

注意:

Header Payload 串型化的算法是 Base64URL

JWT 作为一个令牌(token),有些场合可能会放到 URL里(比如 api.example.com/?token=xxx)。Base64 有三个字符+、/和=,在 URL 里面有特殊含义,所以要被替换掉:=被省略、+替换成-,/替换成_ 。

这里最好还是用专门的jwt解密网站:https://jwt.io/

看着会更清楚

还是尝试登录,输入两个admin,复制token

用专门的网站解密

这个看着就清爽很多

然后把flag拼接起来即可

无签名

一些JWT库也支持none算法,即不使用签名算法。当alg字段为空时,后端将不执行签名验证。尝试找到 flag。

还是登录,然后拿到token解密

根据题目的提示

应该是将alg字段设置为none,这样后端将不执行签名验证。

同时我们将role改为admin试试

注意去掉=

eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0

eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiIsInJvbGUiOiJhZG1pbiJ9

然后用.连接起来,再然后别忘了最后还得加个.用来连接签名(虽然签名为空)

eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiIsInJvbGUiOiJhZG1pbiJ9.

弱密钥

如果JWT采用对称加密算法,并且密钥的强度较弱的话,攻击者可以直接通过蛮力攻击方式来破解密钥。尝试获取flag

这里很明显是要我们去进行JWT的弱密钥爆破

这里作者用的是c-jwt-cracker

GitHub - brendan-rius/c-jwt-cracker: JWT brute force cracker written in C

由于在kali上一直配不好,遂在docker里使用。

先从上面链接里下载zip文件,然后解压缩,放入kali中(作者的kali里已经安装docker了,没有安装的可以去找个教程),然后在该文件夹里打开终端(这里作者给文件夹改了个名),按照github里的指令执行:

具体的命令github里面都有,直接复制即可,只需要构建镜像、运行这两步

安装完成后,我们运行一下,把CTFHub上的JWT复制一下,替换github上给的实例,进行爆破

出结果了,作者的密钥是qrni

然后我们输入密钥,在线网站会显示签名已验证

然后我们把role改为admin

复制JWT

将role是admin的JWT写入cookie,然后刷新

出flag

修改签名算法

有些JWT库支持多种密码算法进行签名、验签。若目标使用非对称密码算法时,有时攻击者可以获取到公钥,此时可通过修改JWT头部的签名算法,将非对称密码算法改为对称密码算法,从而达到攻击者目的。

是一个登录框及源码

<?php
require __DIR__ . '/vendor/autoload.php';
use \Firebase\JWT\JWT;class JWTHelper {public static function encode($payload=array(), $key='', $alg='HS256') {return JWT::encode($payload, $key, $alg);}public static function decode($token, $key, $alg='HS256') {try{$header = JWTHelper::getHeader($token);$algs = array_merge(array($header->alg, $alg));return JWT::decode($token, $key, $algs);} catch(Exception $e){return false;}}public static function getHeader($jwt) {$tks = explode('.', $jwt);list($headb64, $bodyb64, $cryptob64) = $tks;$header = JWT::jsonDecode(JWT::urlsafeB64Decode($headb64));return $header;}
}$FLAG = getenv("FLAG");
$PRIVATE_KEY = file_get_contents("/privatekey.pem");
$PUBLIC_KEY = file_get_contents("./publickey.pem");if ($_SERVER['REQUEST_METHOD'] === 'POST') {if (!empty($_POST['username']) && !empty($_POST['password'])) {$token = "";if($_POST['username'] === 'admin' && $_POST['password'] === $FLAG){$jwt_payload = array('username' => $_POST['username'],'role'=> 'admin',);$token = JWTHelper::encode($jwt_payload, $PRIVATE_KEY, 'RS256');} else {$jwt_payload = array('username' => $_POST['username'],'role'=> 'guest',);$token = JWTHelper::encode($jwt_payload, $PRIVATE_KEY, 'RS256');}@setcookie("token", $token, time()+1800);header("Location: /index.php");exit();} else {@setcookie("token", "");header("Location: /index.php");exit();}
} else {if(!empty($_COOKIE['token']) && JWTHelper::decode($_COOKIE['token'], $PUBLIC_KEY) != false) {$obj = JWTHelper::decode($_COOKIE['token'], $PUBLIC_KEY);if ($obj->role === 'admin') {echo $FLAG;}} else {show_source(__FILE__);}
}
?>

这里输入admin及admin,登录

打印出了我们的JWT

看一下,加密方式是RS256,role是guest

读一下源码,这里发现要读出flag需要几个条件。

请求方式不是POST(这个简单,随便刷新一下就是GET,就不是POST),

cookie不为空且可以HS256解密(需要换加密方式,头部的alg字段也得由RS256改为HS256),

role要是admin(需要由guest修改为admin)

综上,我们编辑一下JWT的Header(头部)和Payload(负载)

{"typ":"JWT","alg":"HS256"}{"username":"admin","role":"admin"}

Base64编码一下

注意JWT是Base64URL。我们要去掉=,然后别忘了在头部和负载之间加上.

最后的结果是(大家可以直接复制):

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwicm9sZSI6ImFkbWluIn0.

把它打印出来的JWT的Header(头部)和Payload(负载)改为我们刚编辑的

然后用jwt_tool工具修改,这里要注意在jwt_tool文件夹下将给我们的公钥写入publickey.pem

jwt_tool工具生成JWT后按F12写入cookie中

然后再刷新(不要点Login,这是POST方法,POST方法不会输出flag)

http://www.hrbkazy.com/news/18797.html

相关文章:

  • 做网站怎样盈利嘉兴网站建设方案优化
  • 成都网站建设推进方案星巴克营销策划方案
  • 百度网站模板免费下载seo学校培训课程
  • 网站的内容有哪些内容吗友情链接交换工具
  • 门户网站开发东莞seo项目优化方法
  • 北京网站建设公司资讯郑州关键词排名顾问
  • 做网站需要什么按钮数字营销成功案例
  • eduma wordpress西安网站关键词优化推荐
  • 泰州网站建设开发企业网站搜索优化网络推广
  • 国内金融行业网站开发网络营销seo培训
  • 天津市网站建设百度网站客服电话
  • 绍兴网站制作关键字挖掘机爱站网
  • 上海城乡建设厅网站seo优化好做吗
  • 网站建设课程设计的必要性发稿平台
  • 内江做网站软文广告100字
  • 网站 外包合同如何注册网站
  • wap网站用什么开发网站seo置顶 乐云践新专家
  • 网站建设注意北京关键词快速排名
  • 南充市房产信息网官网沈阳seo网站关键词优化
  • wordpress 手机应用百度seo和谷歌seo有什么区别
  • 网站建设招代理百度搜索软件
  • 自己制作免费网站百度经验悬赏令
  • 论坛网站开发文档学校seo推广培训班
  • wordpress Suffusion广州seo优化公司
  • 怎么做二手网站代理西安网站建设制作
  • 免费发布推广信息的app最新seo视频教程
  • 做情人在那个网站长尾关键词排名工具
  • 网站测试的意义软文发布门户网站
  • 马可波罗网站做外贸优化官网咨询
  • 九一制作网站品牌营销和市场营销的区别