XhyEax 发表于 2019-2-20 00:00

2019春节红包 四题Writeup

本帖最后由 XhyEax 于 2019-2-20 14:09 编辑

解题方法并不唯一,仅供参考。
## 题目打包下载地址
(https://down.52pojie.cn/Challenge/Happy_New_Year_2019_Challenge.rar)
## 第一题 签到题
关注“吾爱破解论坛”公众号,回复指定字符串即可获得本题正确口令和第二题题目下载地址。
## 第二题 CrackMe
(本题我做的时候是无壳的,因为碰巧发现了内测时的题。公测时加了个upx的壳,故需要先脱壳,esp定律即可)
(这题用OD其实更方便些,个人习惯用IDA)
脱壳后IDA打开,`Shift+F12`查看字符串,找到关键字符串`正确!!!回复你输入的内容到吾爱破解论坛公众号`
按X查看引用,定位到判断代码
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-1.png)
按F5查看伪代码
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-2.png)
上面有个长度判断,输入字符串长度为16
然后下面有个strcmp判断,相等则返回0,不过加了个`!`就变成相等返回真了

所以在strcmp下个断点查看寄存器(v2)即可得到密码
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-3.png)
## 第三题 逆向题
(用OD也不是不行,可以用IDA导出符号给OD调试)
IDA打开,搜索`main`,找到程序主入口,定位到关键代码(前面还有个sha1算法的,应该和AES的key有关)
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-4.png)
逻辑是base64解码,然后再用aes解密,跟`HappyNewYearFrom52PoJie.Cn`比对,相同则通过校验
而aes的key应该跟输入的uid有关,虽然不知道他怎么生成,但是可以在使用它的时候断下,直接提取
所以点开`main_AesDecrypt`,给NewCipher下断点(查看go语言源码可知,传入参数的是key)
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-5.png)
在IDA中运行程序,输入uid,然后口令输入一个`base64Encode`过的字符串(比如`MQ==`),通过第一个解码校验
然后会在解码时断下,查看传入的第一个参数(其实是key的指针)
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-6.png)
在Hex View中按G定位,输入`12858120`,找到对应的值,提取之(key是十六位的,所以提取前十六位即可)
![](https://xhy-1252675344.cos.ap-beijing.myqcloud.com/imgs/52pojie-2019-7.png)
得到`EF2D8BFA0C30AB270B92CC73A563AFA3`
其实这一串数据就是我的uid对应的sha1散列值(`ef2d8bfa0c30ab270b92cc73a563afa3b04faa75`)的字节数组形式,取前16位
AES加密方式为CBC(`main_AesDecrypt`函数中可以直接看出),补码方式为`PKCS5Padding`(AES解密错误时,会退出程序,但是有异常信息一闪而过,给报错函数下断点即可查看异常信息)
所以把`EF2D8BFA0C30AB270B92CC73A563AFA3`转化成字节数组,使用`AES/CBC/PKCS5Padding`方式,
加密`HappyNewYearFrom52PoJie.Cn`,再进行`base64Encode`就可以得到口令了
(至此,程序逻辑完全清晰了)
### go语言代码
之前为了验证golang生成的exe程序结构,从网上抄了个aes加解密的go语言的代码,改一改正好用的上(现学现用)

```go
package main

import (
    "fmt"
    "bytes"
    "crypto/cipher"
    "crypto/sha1"
    "crypto/aes"
    "encoding/base64"
)

func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
    padding := blockSize - len(ciphertext)%blockSize
    padtext := bytes.Repeat([]byte{byte(padding)}, padding)
    return append(ciphertext, padtext...)
}

func PKCS5UnPadding(origData []byte) []byte {
    length := len(origData)
    unpadding := int(origData)
    return origData[:(length - unpadding)]
}

func AesEncrypt(origData, key []byte) ([]byte, error) {
    block, err := aes.NewCipher(key)
    if err != nil {
      return nil, err
    }
    blockSize := block.BlockSize()
    origData = PKCS5Padding(origData, blockSize)
    blockMode := cipher.NewCBCEncrypter(block, key[:blockSize])
    crypted := make([]byte, len(origData))
    blockMode.CryptBlocks(crypted, origData)
    return crypted, nil
}

func AesDecrypt(crypted, key []byte) ([]byte, error) {
    block, err := aes.NewCipher(key)
    if err != nil {
      return nil, err
    }
    blockSize := block.BlockSize()
    blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])
    origData := make([]byte, len(crypted))
    blockMode.CryptBlocks(origData, crypted)
    origData = PKCS5UnPadding(origData)
    return origData, nil
}

func main() {
    uid := "351649"
    h := sha1.New()
    h.Write([]byte(uid))
    bs := h.Sum(nil)
    var aeskey = bs
    pass := []byte("HappyNewYearFrom52PoJie.Cn")
    xpass, err := AesEncrypt(pass, aeskey)
    if err != nil {
      fmt.Println(err)
      return
    }
    pass64 := base64.StdEncoding.EncodeToString(xpass)
    fmt.Printf("加密后:%v\n",pass64)
    bytesPass, err := base64.StdEncoding.DecodeString(pass64)
    if err != nil {
      fmt.Println(err)
      return
    }
    tpass, err := AesDecrypt(bytesPass, aeskey)
    if err != nil {
      fmt.Println(err)
      return
    }
    fmt.Printf("解密后:%s\n", tpass)
}
```
## 第四题 RCNB
解压得到`RCNB.md`,内容如下
```
# ȐĆŅƃȓƇńƃȒċƝTɌÇńßɌĉŇƅŕƇŃbȒȼȵßȒĆȵƁȓĉnƁɌćǸß

ƦćƝƁȓĉnƅȓčƞTɌćÑbȒČŃbȒċÑbŕƇŃtȒČNƃȒĈÑƄȓĊÑƄŕƇņTȓčƞTɌćÑbȒċƝTŘcǸTȐĆŅBƦĊȵtřÇȵƅȐċŇbɌcńtȓČŇƁŕƇNƀȒČŃBɌćÑBɌċnƄȓĈƝbŗƇƞTŗčnBŕƇntȒȻŃBȓĉnƅȒČNƅȒƈŇtŕčȠßŕƇŃƃřčȠbřċȵƀ

ȐčNƄŕƇņƃɌcŅƄɌċntŕƇŇƁȓƇńƁŕƇńtɌcńƄŕƇńtɌCňƀƦȻƝƃŕƇńtɌCňƀȐĉņtŗcŅƅȒĈÑƄȓĊǸƅȓĈȵtɌćƞßŕƇņTȒȻŃtɌCňƀɌćǸbȒȼǹßȓĈƝB

[ƦĉņƃŖċŅtŕƇŅƀȒCŅƀȒƈŇtɌcŅƄɌĉŇßŕƇņTȓčƞTȒƈňtŕƇńtȓĉntȓČŇBŗcŅƅɌćƞƁȓćŅƁŕƇņTȒȻŃtɌCňƁ](//rcnb.xyz)

řĊÑbȒĉȠƀɌćÑbȒċƝTȓćŅƁɌƈȠƃŕƇŃtȒȻŃtȒĈƞTȑÇǹƄɌCȠƄƦȻŇƅɌćƞBȐčnTŗÇÑBřĊÑbɌĆntŗÇǹb

ȐȼŃßɌćÑbŕƇņTȒȻŃƄŕƇņTɌcńtȒCŅbŕȻ

ŘĈÑƀƝƄŘȻŖĊǸƀrcnƃňßɍĉƞƀRČņbRÇrcnbrcnbrcnbŖĊƝƃrcnbrcnbrcnbrČNtȓĉƞƁnƅŔƇńTrćǹƁȓĆÑƅŔȼŕÇƞƅƞßȐCŅƁȐƇŖĆňƁɌƇȵƃȑĈȠƃNƃƦčƝƄȓĉŕČňƃŇbȐĆȑćnƅŘȼȵßƞßRĆǸƄɌCƞBȑĊŅTŗĊɌȼŃßŇƁŔcŔƈǹTȠƁɌĆńƅɍĉƝTŖÇɌcŇƅŖĆntńƁȓČňƄŘȻȓȻnƃǸƁɌCȒćȵƁȵƄɌCŅƅȐčŃƀřCřƇŇƁǸtřÇƞbƦČnbRCƝßȐćǹƁŔȻřȻņBǹBȑċŗÇƞƃȠBɌĆÑƃŕčņƃȓƇńbŖčÑbɌĊŗƈÑBRcƞƁȑƇńTƦČǹƀǸƀŘcŘȻnƅRCņƃŅƄȐĉNTŘĈÑƄŕčȐćǹbŇTȓćǹßɌĈŔȻňƀƝbȐÇrCǹTȓȻŃBńƄɍċńbɌČŗƇnƅȵƀŗċņßRCŇbřČřćÑƀȐĊŃbǸƅɍcȑCȵbǸßȑƇȑCǹƅŘȻŃƃřċŃtnƄRċǹBrƇńƃŖĈȑĉņbƞƅƦĆrCƝTƦĆÑBņƄrćȑƇÑƅńƄƦƇŗĆnƀŔĆȠƄȐćNƀÑƅƦȼȓĉŇƄȵßȑCǹƄȐȼŗćȠƃŅBȓCȠƁŔċƝßřcŘčŅbƦĊƝƃɌċƞƀnƁŘȻÑbŖčŗCntȒȻÑƅNtřȼrƈNƁŕĆƝBȐÇňƅȐCŃßŅƄrćƞƀȓĊńƃŖƇǸƁřċŘćŃƁŘȼÑƅȑċȵƀŃtrƇŃßŕĉrćNtȒȻƝƁɌƈȠbƦĊNƅŔCƝßȓČńTƦċŇbŖƈņƃŖĉȵtnƃɍĉɌƈňTřčǹBȠbŕĉřċńtņƄȑÇƞƁȒcŘĉǸƅňƃȒcŔĈńßǹƁƦćȓȼǹƁÑƁƦCȑċŇƄȓƈnƄȵƄrcŘčnƃȵßRčȑcNƁrĊNƅȐÇŇƁņƁȒčnƀɌČňbɌĆrȼƞTŇƃɌCřÇntňƅȒȼƝBȑcȐȻnBňƁȑċȓcȠbǹtȑƇǹƁrĈŖƈňƁŗcȵbňtřȼƦĈŃƅňßŗcŃƀƦĊŔcńTŖĉȠƅŃƁȑĊȐÇȠtƞTɌƇȵƅȐȼɍĉÑBrƇŇƅŔčƞßnƅŗĈɍĆȵƅŖČņbŖĆȠTȒċÑƃŗċNƃŕȻŃTNTŔčŕĆƞƃNƃRČȐĆņƁŃƀřċŃbȓčƝƃȑcŔĆNtȑčȠbŗĆNtŇƁȓčrčŃƄȑĉntŅtȓȻřcÑƄŖƇÑßȐĆńbŅbŕĊŃßŕČŇTȒcÑƁȑĆŘÇńƃRƈǸƅŕcȠbņTȑċRƈŇƀȐcňtńTƦĈɍCȠƀÑBRĉǸƁŗȼȑƇnƁȵßŕƇŖċƞƅřƇǹtŇƄŖÇȠƃRĈǸƅŕƇņtŔĊřƈňbƝßrƈŕÇǸtŃTȐĆnbȑĉȑȻǸƃǹƀRƇrƈNbnƄrċrĉŅBƦcňtRċňƁnBŗȼÑƁŕċƞßɍĈŗćņƀǹƁȑĈŅtŔƇňƅŗƇrĊǹƄǸßȒƈǹßŕȻȠBŔćƝtŔȻÑBȓĆǸTȑċŕĉŃtŃƀŘcřȻÑBŅƀɌƈńƄŔĊÑTƦĈƞƃȓȼņƁŘȻnƄŔćŖċǸƄŅBŖÇȓĉŅBňƄȐȼŖÇņbǹƅrȻÑTŔČŅßŔĊNtɌƇȠTRĉntřčŕċNtȠtƦȼȠƅRĆÑƄŗćŘčŃƄŖÇÑƄǹbȑĆŖÇǹtƞƄȓcƞƁRCǸƄɍćȒČNƅȓȻňTņBRĆƞbřƇŖcȠbřȻńƄŗĆŃTŃBƦĉŗĊNtřĊņßȒĆȠƁȑĊŅBȐƈȵBǹƁřcrĉƞbnƀƦċŘȼÑƀȒÇńƁŗCȠƁƝßrĊǹtŗȻŃƀȒȻɍċNßŖĉǸßŃTrƇȒȼȠƃřƇŃƃNbŘċƦČňƅŔČnBŗČƞbƞßŔȼŔĊȠƀnƅŖċŕčŇƄǹBŔCřċǹƅȐČňƀƝƀřĈŖČȵßńTɌCǹƃŔćȓċÑtŕȼƝƄȒcńbǹbȓƈƝƅɌĆȠƄŖćǹBŖƈŘÇƝƅƦĉŃƁŃßŖĉNƃŔĉÑƄŖĈƞtȑČȑČnBŃƁŔČnƃȒĈȓĈNBǸßȐCȠßȐčŅbɍĉƞtƦĉrȻŅBŇßȒȻǸƁŘȼŘċńBňbŘčnƄŘÇȒƈŇƅǹTřćȐćŅTƦċŇƄŇbɌƇƦƇńƀňƁrČRČņbȑÇŅßȵƅřȼŖĆǸƀŔCƝƀņTȓƇrĊŇtňbŕÇŃƄŔƈńTŘČȐĊƝbřȻǹƃɌČȠBńƄȒƇNtřĊɌćņBŕȼȠƃŖƇňtÑßȓȼȑČÑƅnƄɍĉnTŗcŘƈňßȓĉȵƄȑcNbȠßƦÇŅƃɍĈƦĊnƁŖÇŅBŔcŃƁńƁɌċňTŕĉƦCņƅƦȻȵƅȓÇǹƃȓĆȠƃRȻňƃřćǸƀŗƈǹßřĉňbȐČńƁɍĈŇTÑTŘćŗÇNbŗȻÑTRƈǸƃǹƀŕȻRĉƞBńtŘȻŔĆƝƁņBŕȻNBRĉņƃȓČƝƁȐċÑƀRČŕƈňƀrčŇƅȐĊŅTƦȼǹƁňƃȓĊntřĈŘCntȠƀȒcƞƃɌćɌĊȵƅŕƇňƃnƄŔčńTRČřȼńbŇßŕĊňtŘCǹbŔĈnbŕĊńtȑcŃƄŔĈŔčńbȐčȠBřĉŅƃņƃŘƈɌÇÑTŇƄȓĉɍċňƅńtŗCřČƝƄRCņTƝƁŔĈRȼNƅȒCnƃɌƇǹßńTŕƈŇBŘCŕȼÑBȒÇŃTǸƁȓȼŕČȠtȵƁȑƈńƀŔcȑƇÑßrƈǸTrcŃTŇƅȓćɌćńƀɍćňƀȠƅŘȼǸƁɍĊřčƞTņƃrĊǸƀŗcȓƈńƀŇƀȐcrĊŅBȓĈȠƁɍćnƁnTɌƇÑƃȐȼƞßŔCɍćƞbƝBȒcņƁrċnBŗƈȓȻńƃɌCÑBƞƀȒČňßŔƇřƇǹbŖcņƃŕĆňtŕČņƅȒĉŇƅȐĈŇƁȠƃRĉŔƇǸtŘĊȵßŔȼńbȑƈȠBǹBɌčȵƃrčǹƄŔȻƞƅŗȼȒĆƞƀŖĉȵbŕcƝTȒȼńBrċǸƅŘcȠTȐčƝbȓĊŅbŘCȠƀɍĆȠƅŕĉNƀȠTŖćřċńƁńtȓĉȠƁƦȻnƀȓÇɍĈŅƅǸƀȓčȒȻņƀǹTɍcȑĆȵƃrȻƝƀɌCŃtɍĈȵtŖČņßňƅŗĉÑTŕƈȑcŃƁǸßȒƇȐÇƞßńbŕƈȵBŕƇnƄȓċȑȼȠBɍċŅTŗċŅƃƦčńƄňTRÇrcŅƄȐÇȠTřčȠTƞBɌȼɍĈŇtɍĉÑƅǸBrĆňƃŖȻŕčȵbņßŘĊƞƀȐƈntŘčȓȻÑTŕcńtņbŔȼɌČÑBɌčȵbȑĈŅBŕĉƞƄÑtȒÇȓȻNƀÑßŘĈÑƀȐȼƝBŔĈȵtɍĊÑßŕĉȒȼntŕÇņbńtɍĆŅTŗĊŃƃRċņƅŘcNtȑĆŅƁrƈǸƄȒCƝtŖȻrÇŇbřĊŅƅȑƈŃBƦċnßňƅƦĉÑtȓĈřȼŃƀɍcŃƄȵtɌCřĆNƄǹƄƦȻŔčŅƃnƅrċrCǸƄȓƈŃƀrÇnƁrCÑƅrCȵƀrƈǹßrƈȵƁRĆƞƁrÇŇTȵßƦČȑȼǸƁǹBȑcɌƈƝTȒĆŅTrĆňƃRćŇƁȠƅȓcrc
```

有一个明显的网址`rcnb.xyz`,浏览器打开发现,所谓RC就是一个自定义的编码方式(因为开头有R结尾有C?),将内容解码得到
```
# Prove your Niubility

Hello there, Welcome to the 52PoJiE Spring Festival 2019 Challenge - RCNB.

To prove you are as NB as RC, complete this trial!

(//rcnb.xyz)

And the key: Which_is_N0t_Th3_Answ3r

With the trial:
```

后面的解出来是个7z的文件,但是由于转化成了字符串,所以很多字节丢失了,解码出来变成了问号。所以需要修改js代码,让它返回16进制字符串,方便直接转化成文件
### 修改js代码
定位到editor.js代码的rc2str函数,将它修改为

```js
    function rc2str(str) {
      if (str === '') return '';
      var res = rcnb.decode(str.trim())
      return Bytes2Str(res);
    }
```
Bytes2Str函数是直接网上找的
```js
function Bytes2Str(arr)
{
    var str = "";
    for(var i=0; i<arr.length; i++)
    {
       var tmp = arr.toString(16);
       if(tmp.length == 1)
       {
         tmp = "0" + tmp;
       }
       str += tmp;
    }
    return str;
}
```
然后就可以得到一串16进制字符串,转化为文件保存即可。
压缩包的密码就是之前得到的`Which_is_N0t_Th3_Answ3r`
得到一个nb文件,直接记事本打开,得到
```
ȐȼŃƁȓĉnƅŕƇŅƀȓƇŃƅȒċƝtŕƇNƄɌćŃTɌCȵBȒČNƄɌCňƀɌćÑbȒCŅTŕƇŇƁȓƇńƁŕƇŅƅȒCņbȒċƝTȒƈƝƀȒČnƁɌćŃTȓƈȠƅȓƇNtɌcńBȓĊǸƁȒȼȵbȒƈnbɌCȵßȒȼȠTȓĉNƁŗćƝƅRćŇbƞƅRȻÑßŘȻŇƁrĊńßŕčȠtRĉNƁƦĈņBƦcǹTƦćŃbƦĈNƁƦĈȒćƝTnƅŔĆņTrȼȒćƝtǸßRĊńtrȻNtrČńßŕčǸTRĊȵTrȼȵbŕƇŇTrĊnTŔĆnBŘÇƝƃrĉǹtƦćņƅƦcȵƀƦćņBƦcǹTƦćŃbƦĈNƁƦĈȒćƝTnƃŔĆǸtRĊƝƃrĉňTƦĉřƇƞtȵƅrȼņbrCnƃŔĆņßRćńßrȻńßŕčŃBRĊƞƅřȻƞƀřƇǹtƦćȵTřƈƞtřȻŅtƦcǸƁřȻņƄƦcƞTřȻŇbřƇǹTƦćNtƦĈƞƄřȻņƀƦcǸƁřȻņƄƦcƞßřȻņƁƦcǹtƦćņƄƦcƞƄřȻņBƦcǹTƦćŃbƦĈȵƀƦćȒćƝTŃƄŔCƞTřȻŅtƦcňTƦĉřƇƞtȵƅrȼņbrCŃƄŔCƞßřȻŅTƦcǹTƦćȵƄřƈȵƀƦćŅTƦcňTƦĉȵƁřƈŅßřƇȒćƝtŃBRĊƞßřȻņƀƦcňTƦĉȵƄřƈƞTřȻņƀƦcǹTƦćNtƦĈƞƅřȻņƀƦcňTƦĉȵƄřƈƞtřȻŇbřƇǸƁřȻņƄƦcƞTřȻŇbřƇǹTƦćNtƦĈƞƄřȻņƀƦcǸƁřȻņƄƦcƞƄřȻȒćƝTnƃŔĆǸtRĊŇƅrĊŃBrČŃƃŔċńtrȻŅbrċǹTƦćȵTřƈȓčnTnƅrćǸƃŔćÑtŘȻȠBŘĊȵƅŕċRćņßƝƃŔƇȵƅrƇŅTƦcǹTƦćȵƁřƈȓčnƄNtřĆŃƃŔċÑƀrÇƞƀřƇǹtƦćņƄƦcƞƅřȻņƁƦcňTƦĉņƄƦcňßƦcņƀƦcǸßřȻȵƃřƈňßƦcŇBřƇǸƄřȻņƄƦcȵƀƦćȒćƝTǸbŔćňTRČNƅŘCǹTƦćŃbƦĈňTƦcƞƀřƇǸƄřȻȒĉŅBǹTrčȠbrčŅTŔcÑƃRCȵbŕƇnƅrćŃƄŔCƞßřȻŅTƦcňTƦĉȵƁřƈƞƄřȻŇbřƇňTƦĉȵƁřƈŅßřƇŇBřƇǸƁřȻņƄƦcƞßřȻƞƀřƇǹtƦćȵTřƈÑbřȻřČȵßǸTRĊǸtRĊǹTrčȠbrčǸbŔćņtRćȠƃŘĊŃƄrČŃBRĊƞƅřȻņƀƦcǸƁřȻņƄƦcƞƅřȻƞƀřƇǹTƦćȵƀřƈNƁƦĈƞƀřƇňTƦĉȵƄřƈƞtřȻŇbřƇǸƁřȻņƄƦcƞƄřȻņBƦcǸßřȻȵtřƈȵƀƦćȒćƝƄȵƅŔȻNƅRĉǸƅŘCņbrCȠBŔĆŅßřƇřČȵƁȵƅŔȻńtrȻƝƃrĉǸƃřȻȵTřƈNƁƦĈņBƦcňTƦĉȵƁřƈŇbƦĆŅTƦcǹtƦćņƅƦcȵƀƦćŇBřƇǸƅřȻȵtřƈƞßřȻņƀƦcǸƄřȻȵƄřƈȵƀƦćņƀƦcǹTƦćŃbƦĈNƁƦĈņƁƦcǹTƦćNtƦĈƞßřȻřČȵƅnƃŔĆƝƃrƈǹƀŕĉŇTrĊnƃŔĆȵƁrȼņbŔcŃƃrČǸbŔćņßRćÑƀrƇǸßřȻņƄƦcƦȼŇƅnßrćǹbRĊŅbrȻǹTŕĊňTƦĉřƇÑbǸtŕĉńƅŕčƞƀRȻÑBRCƝBrƈŃbřĆŃTŖĊnƀŘÇǹƀŕĉŇƄrĊƝƃŔƇȵƄrȼŃƀrČņBrCȠtRĉňßƦcřċÑƅRĆŇtŖƇŃTǹƅƦćȒĉŅBȵƁrȼňßŕċȠßŔčƞßřȻņƁƦcǹTƦćřƇƞtǹTrčņbrCnƃŔĆÑƃRCȵbŕƇņbrCnTŔĆnBŘÇŇƅrĊŃƄrČŃBRĊƞƅřȻņƀƦcǸƃřȻȵßřƈƞßřȻƞƀřƇǸƁřȻņƄƦcƞTřȻŇbřƇǹTƦćNtƦĈƞƄřȻņƀƦcǸƁřȻņƄƦcƞßřȻƞƀřƇǹTƦćȵTřƈƞƄřȻŇBřƇǸƅřȻȵtřƈƞƅřȻȒćƝƅŃTŖĊnBŘÇŅbrȻȠBrčǸTRĊǸßRĊŅßŔcŃƁřĆǹbRĊȵßrȼƞbŘČŇtrĊǸTRĊÑBRCǹƄrčńƅŕčŃƄŔCƞßřȻņƁƦcǹTƦćȵTřƈȓČŃƅƝƅƦcNtƦĈňßƦcņBƦcǹßƦćńßřƇňßƦcņƀƦcǸƅřȻřčȠbŅtƦcǹƅƦćȵƄřƈƞTřȻƞƀřƇ
```
拿去网站解码(不需要16进制了,所以用原本的js即可)
得到
```
Well done! It seems that you have great programming skills.

ȐȼŃßɌCȵƃȒȼȵbȒƈnbɌÇńßɌĈȠƃȒȻŃBȓƈȠƃȒȼȵbȒČŃBɌCňƀȒĊŇßɌcńtȓČŇƁŕƇņTȒȻŃƄŕƇŅƅȓƇŃƃȒȼȠbȒCņƁɌCňƀȒCŅƀȒĉȠƀɌćÑbɌcŅƄɌĉņƄȒȻńƄɌĉŇTŕƇņTȒȻŃƄŕƇŃbȒČŃƄŕƇńBȒČnƁȓȼǸß

ŗĆnƀȒćntŕƇntȓƇńƅɌƇƝƄřĈƝßŗƇȠbȓčȵbȒȼƞtŗcŅƅȑĉȠƁȒCŅƀɌćŃTɌćÑßŕƇŅtȓČňBɌČŅƅȓĊǸƄɌcńƄŕƇńtȒĆȵtɌĉŇTŕƇŃƃřčȠbřċȵƀȓCÑBřćŃBŖČȵƃɌćǸƀȓƈȠßŘčŅƄŗĉȠƄȒȼȵƅȒȻŅBȒĆƝƃȒĈÑƄȓĊņBřƇNƁɌƇƞbɌCƝßȐĉņtƦȻƝƃŗĈńƀɌCƝB

;) ȐcňTŗcŅƅȒCŅƀȒĉȠƀȒȻŃƄɌcńƄŖċŅtŕƇņTȒȻŃƄŕƇŅtȒČŃßŘčńbƦȻŇƅɌČÑtɌƈǹƃɌĉŅßȒCŅƅȒČnBƦȻƝƃȑÇƝƄŘCNƁȐĉņt
```

继续解码就可以得到key了
## ----简单的分割线----
迟来的元宵快乐!

PS: 活动规则所限,活动结束之后才能发布解题方法

blsn3548 发表于 2019-2-20 10:09

本帖最后由 blsn3548 于 2019-2-20 10:12 编辑

前两题都很简单,第三题看了两遍发现是go程序,有点懵逼,没搞定,之后也没在搞。刚刚看了分析思路立马明白了。
第四题看了看算法,网上撸了一段代码本地运行得到一个.7z文件然后解压得到一个文件继续解密就找到key了。

附当时用的代码:
'use strict';
//https://github.com/Coxxs/RCNB.js
var rcnb = require('./rcnb.js');
var fs = require("fs");
const util = require('util');

function str2rc(str) {
        if (str === '') return '';
        return rcnb.encode(new TextEncoder('utf-8').encode(str));
}

function rc2str(str) {
        if (str === '') return '';
        return rcnb.decode(str.trim());
}

var res = '填入要解密的那段';

var data = rc2str(res);
console.log(data);

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.7z');

// 使用 utf8 编码写入数据
writerStream.write(data,'ASCII');

// 标记文件末尾
writerStream.end();

console.log("程序执行完毕");

山高人为蜂 发表于 2019-2-20 09:25

本帖最后由 山高人为蜂 于 2019-2-20 10:25 编辑

我第三题搞不了。算法太复杂了(在输入古怪字符时,程序会提示AES、shXX加密模块失败,就知道不是好东西)。而且最终是要在网络上验证口令,绕过注册码的爆破方法没用,只能放弃了。

第四题很多朋友没搞定,要知道加密的密文首先要知道其加密的算法,打开看到的是ASCII文本,不放过任何可疑的字串,我首先是看到了一个疑似的网址,在浏览器输入后,跳转一个网页,果然有料到,知道这种很神奇的rcnb加密算法。再到外国网站上找到这种算法的解密网页,将密文复制、粘贴尝试解密,密文很明显的分了几段,每一段有非常丰富的信息,信息内又有下一步的解决方法线索,最后作者隐藏了一个重要密文在不起眼的位置,解开密文就知道了本题最终口令。其实不用编程的,我用了浏览器、谷歌、百度、WINHEX十六进制编辑器、WINRAR、记事本,不断的复制、粘贴就搞定了。将7Z的十六进制数据,用WINHEX建立一个空白的文件,粘贴进去,保存成7Z文件,用WINRAR解压,输入密码,就能解开。

第三题根据楼主给出的注册机,改了改ID,解到了口令,居然顺利的领到了迟到的红包。哈哈,搭个便车。{:301_988:}
现在任务已经关闭了,我可能是最后一个领到红包的了。
不过GO语言还是挺有意思的。

MagicBlue 发表于 2019-2-20 06:42

原来rcnb.xyz是个url....我也是醉了

Sherry01 发表于 2019-2-20 19:40

第三题不用脱壳吗?没查出是什么壳

梦游枪手 发表于 2019-2-20 17:38

当初第三题的CBC补码卡了我不少时间,最后去查了go语言的补码模式才搞定的{:1_909:}

XhyEax 发表于 2019-2-20 13:36

chaosnaix 发表于 2019-2-20 11:44
第二题按照楼主的方法,直接用IDA打开,看到的字符串都是乱码啊??难道是我使用的方式不对?楼主真的没 ...

我做的时候是没有壳子的,后面加了个upx,自己脱下

hlrlqy 发表于 2019-2-20 10:14

golang那道题就是uid的sha1 一眼就看出来了的

Eorton 发表于 2019-2-20 09:15

虽然第二题用esp脱壳大法是秒破,但第三题我是找到算法却不知道怎么转换,第四题是到达Which_is_N0t_Th3_Answ3r了,但是7Z后面加一堆乱码也很扎心,多加学习哈哈

XhyEax 发表于 2019-2-20 00:06

H大,原创是不是能置顶一段时间@Hmily

AA20072008 发表于 2019-2-20 00:23

楼主好厉害佩服

成国大吉大利 发表于 2019-2-20 00:33


楼主好厉害佩服

2205 发表于 2019-2-20 00:51

想领2019红包,可惜解密要求的技能树太多了,技能点根本不够点。

hongge 发表于 2019-2-20 02:05

表示后面两题没看懂~{:301_983:}

陈世界 发表于 2019-2-20 02:23

谢谢楼主分享了

YuriBrightan 发表于 2019-2-20 02:25

学习了,学习了

涛之雨 发表于 2019-2-20 07:59

大佬。。。能不能顺便把红包文件上传一下。。。像照猫画虎一波。。。但四超过时间了……就申请不了也下不了也没有解压密码{:17_1067:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 2019春节红包 四题Writeup