欢迎光临
我们一直在努力

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

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

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

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



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

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


[Golang] 纯文本查看 复制代码
package mainimport (	"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中寻找来源,是个随机字符串

[JavaScript] 纯文本查看 复制代码
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代码为

[JavaScript] 纯文本查看 复制代码
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视频合并等问题,因为本身对这些也不太了解,以上。

赞(0) 打赏
未经允许不得转载:哈哈网 » 【2022春节】解题领红包之番外篇 {Web 中级题}

相关推荐

  • 暂无文章

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏