156608225 发表于 2022-2-16 13:43

【2022春节】解题领红包之番外篇 {Web 中级题}

有编程基础,汇编半桶水,没玩过脱壳,磕磕碰碰完成了除Android之外的题目,也算是一次学习了。
Windows的解题思路大差不差,已经很多分享了,分享下个人Web题的思路。

1. Fiddler加载saz大体看下,是个m3u8视频,答案应该在视频里

2. 先搞个web服务跑起来看看,为了方便直接golang写一个,网页的静态文件从Fiddler中保存下来

package main

import (
        "github.com/labstack/echo/v4"
        "github.com/labstack/echo/v4/middleware"
)

func main() {
        e := echo.New()

        // Middleware
        e.Use(middleware.Logger())
        e.Use(middleware.Recover())

        // Routes
        e.Static("/", "web")
        e.GET("/api/ping/", HandleApiPing)
        e.POST("/api/drm/", HandleApiDrm)

        e.Start(":80")
}

func HandleApiPing(c echo.Context) error {
        return c.String(200, "success")
}

func HandleApiDrm(c echo.Context) error {
        return c.String(200, string([]byte{
                0x08, 0xA5, 0xE6, 0xC2, 0xC2, 0x61, 0xA8, 0xAC, 0xB4, 0xD7, 0x9C, 0x49, 0xAF, 0x16, 0x0A, 0x3A,
                0xDA, 0x4E, 0x5C, 0xEA, 0xE1, 0x6F, 0xED, 0x46, 0xEB, 0x6F, 0x49, 0x8C, 0x9B, 0x63, 0xD5, 0x3B}))
}
3. 意料之中的无法播放,再次Fiddler抓包,发现/api/drm/请求中h参数变化,去js中寻找来源,是个随机字符串
let e = await async
                              function() {
                                    let t = new Uint8Array(16);
                                    crypto.getRandomValues(t);
                                    let e = n(t.buffer) + Date.now() + Math.random();
                                    return new Uint8Array((await async
                                    function(t) {
                                        const e = (new TextEncoder).encode(t);
                                        return await crypto.subtle.digest("SHA-256", e)
                                    } (e)).slice(0, 16))
                              } ();
                              var r = new URLSearchParams;
                              r.append("h", n(e.buffer)),
                              r.append("id", t);
猜想把h值固定为fiddler中的缓存值即可,修改js代码为
let e = await async
                              function() {
                                    var hex = '7b10311e6e310f0df068d9ede10475a8';
                                    return new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function(h) {
                                        return parseInt(h, 16)
                                    }))
                              } ();
                              var r = new URLSearchParams;
                              r.append("h", n(e.buffer)),
                              r.append("id", t);
再次访问,正常播放视频,视频中找到正确flag

解题思路存在运气成分,没有涉及到m3u8的AES加密或ts视频合并等问题,因为本身对这些也不太了解,以上。

156608225 发表于 2022-4-19 18:08

Titanic 发表于 2022-4-19 13:58
你好,请问刚刚的1.7.0发布帖子怎么隐藏了?
目前已知的2个BUG,还是未能得到解决:
1、桌面有运行主题、 ...

帖子因为语雀链接内容被B,重发需要审核
中键这个是坛友建议下增加的,我个人并不使用也不建议使用,因为很多软件对中键都有功能会冲突
第二个问题也有网友反馈过,但我机器上测试正常,无法复现这种BUG

闲云潭影 发表于 2022-2-17 08:12

156608225 发表于 2022-2-16 18:08
我机器Win10,在虚拟机Win11测试正常

那应该是我的问题,几个月前升级的,就是无论是图片还是软件快捷方式,无论拖拽还是在Lucy手动添加,都不能出现图标和名称,就像没添加一样,用着win11也不习惯,用了几天就回滚了,Lucy就正常了,现在一直用的win10,也没再去试

BestSum 发表于 2022-2-16 14:05

算你这个最简单{:1_918:}

逍遥一仙 发表于 2022-2-16 14:46

合并可以用我下载器里 合并助手 https://www.52pojie.cn/thread-1374045-1-1.html

分片拖进去,key填上面key输入框里就行(支持base64/hex)。

Atomhua 发表于 2022-2-16 14:57

算你这个最简单{:1_927:}

pzx521521 发表于 2022-2-16 15:05

和你思路一样   自己建一个服务器模拟
但是没有注意到POST/api/drm/ 里面还有参数h....

qq350232900 发表于 2022-2-16 15:50

这个只有膜拜的份,我是一点都看不懂啊,不过还是感谢分享!学习了!

移情√似水 发表于 2022-2-16 15:53

还是细节决定成败呀,学习了

dongye 发表于 2022-2-16 17:32

和我的方法一样, 固化加密种子

闲云潭影 发表于 2022-2-16 17:33

我记得Lucy在更新Windows11后无法添加应用到Lucy,不知现在解决了吗

156608225 发表于 2022-2-16 18:08

闲云潭影 发表于 2022-2-16 17:33
我记得Lucy在更新Windows11后无法添加应用到Lucy,不知现在解决了吗

我机器Win10,在虚拟机Win11测试正常
页: [1] 2
查看完整版本: 【2022春节】解题领红包之番外篇 {Web 中级题}