首页
论坛
课程
招聘
未解决 Go 二进制逆向 1000.00元
2021-10-25 15:22 8471

未解决 Go 二进制逆向 1000.00元

2021-10-25 15:22
8471

任务类别:逆向工程(GO 二进制逆向)

一个二进制app,一个app配置文件。

如何运行:
在Linux环境中运行。

 

====================================
程序功能描述:
app运行在X86 Linux环境上,app使用80端口。
通过发送get请求,让app来返回值。

 

然后计算结果并返回。同时并生成一个 key(UUID) 、value存储在Redis中(也会写文件一份)。


[公告] 欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

最后于 2021-11-26 22:42 被xdc.ink编辑 ,原因: 2
收藏
点赞1
打赏
分享
最新回复 (7)
雪    币: 228
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdc.ink 活跃值 2021-10-26 10:40
2
1
为什么不给我审核?
雪    币: 387
活跃值: 活跃值 (61)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
moyiah 活跃值 1 2021-10-30 23:10
3
1

需求的2个算法如下:


需求算法1、app 生成Redis 存储时候的Key(UUID)的算法:HMAC-SHA256 + Argon2

Key(UUID)根据input由以下算法计算得来:


    input := []byte("SUNhbkhhelVuaWNvcm40LXdzLWF1cy1kYXkyPy05OTkz")

    mac := hmac.New(sha256.New, []byte("NotASecret"))
    mac.Write(input)
    encoded := base64.StdEncoding.EncodeToString(mac.Sum(nil))

    output, err := argon2.Key([]byte(encoded), []byte("NotAnotherSecret"), 3, 4, 4096, 32, argon2.Argon2i)
    if err != nil {
        fmt.Println(err)
        return
    }
    encarg := hex.EncodeToString(output)

    u1 := uuid.UUID{}
    u1.UnmarshalText([]byte(encarg)[:32])
    fmt.Printf("Key UUID = %s\n\n", u1)



需求算法2、app 返回值中 Status的算法:PBKDF2

返回值中 Status根据返回值中的Result由以下算法计算得来:

    result := []byte("VajVgtoR/hDgfac6qVeGMrzjMbVuVyJzFjA58iKtag==")

    status := pbkdf2.Key(result, []byte("ws-aus-day2"), 2, 32, sha256.New)
    fmt.Printf("Status = %s\n", hex.EncodeToString(status))



完整测试Go源程序

//usr/bin/env go run $0 "$@"; exit
package main

import (
    "encoding/base64"
    "encoding/hex"
    "fmt"
    "crypto/hmac"
    "crypto/sha256"
    "github.com/pzduniak/argon2"
    "github.com/satori/go.uuid"
    "golang.org/x/crypto/pbkdf2"
)

func main() {
    input := []byte("SUNhbkhhelVuaWNvcm40LXdzLWF1cy1kYXkyPy05OTkz")

    mac := hmac.New(sha256.New, []byte("NotASecret"))
    mac.Write(input)
    encoded := base64.StdEncoding.EncodeToString(mac.Sum(nil))

    output, err := argon2.Key([]byte(encoded), []byte("NotAnotherSecret"), 3, 4, 4096, 32, argon2.Argon2i)
    if err != nil {
        fmt.Println(err)
        return
    }
    encarg := hex.EncodeToString(output)

    u1 := uuid.UUID{}
    u1.UnmarshalText([]byte(encarg)[:32])
    fmt.Printf("Key UUID = %s\n\n", u1)



    result := []byte("VajVgtoR/hDgfac6qVeGMrzjMbVuVyJzFjA58iKtag==")

    status := pbkdf2.Key(result, []byte("ws-aus-day2"), 2, 32, sha256.New)
    fmt.Printf("Status = %s\n", hex.EncodeToString(status))
}


雪    币: 1747
活跃值: 活跃值 (2203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱我佳鑫 活跃值 2021-10-31 00:07
4
0
moyiah 需求的2个算法如下:需求算法1、app 生成Redis 存储时候的Key(UUID)的算法:HMAC-SHA256 + Argon2Key(UUID)根据input由以下算法计算得来:&nbs ...
厉害
雪    币: 228
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdc.ink 活跃值 2021-11-3 13:54
5
0
moyiah 需求的2个算法如下:需求算法1、app 生成Redis 存储时候的Key(UUID)的算法:HMAC-SHA256 + Argon2Key(UUID)根据input由以下算法计算得来:&nbs ...
是否可以给个联系方式,聊聊细节?
雪    币: 228
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdc.ink 活跃值 2021-11-3 14:04
6
0
本人 QQ:1075821200
雪    币: 1747
活跃值: 活跃值 (2203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱我佳鑫 活跃值 2021-11-4 06:19
7
0
xdc.ink 是否可以给个联系方式,聊聊细节?

没啥细节,只要能通过IDA还原函数名也搞过go开发,那源码啥样大致都能清楚。





最后于 2021-11-4 06:26 被爱我佳鑫编辑 ,原因:
雪    币: 228
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdc.ink 活跃值 2021-11-5 09:29
8
0
爱我佳鑫 xdc.ink 是否可以给个联系方式,聊聊细节? 没啥细节,只要能通过IDA还原函数名也搞过go开发,那源码啥样大致都能清楚。
,能否加一下我呢?
游客
登录 | 注册 方可回帖
返回