全国信息安全竞赛-easyGo writeup

本文介绍使用IDAGolangHelper脚本辅助IDA进行Golang程序逆向的过程,通过动态调试揭示Base64加密细节,并利用Python脚本实现自定义Base64解密,最终获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所需工具:

    ida pro,IDAGolangHelper,easyGo程序

将程序拖入对应位数的IDA中观察函数窗口,可以很容易的看出来,程序进行了无符号处理,Google翻阅资料,查看无符号golang逆向技巧,找到IDAGolangHelper这一脚本(项目地址在文章最下方)

 

接下来,我们打开脚本(文件-脚本文件)找到IDAGolangHelper脚本所在的文件,打开,选中rename function 后选择go版本,默认是Go1.2,然后点确认,发现函数窗口变成了我们能够理解的函数名

 

接下来,找到main_main函数,F5得到伪代码,分析伪代码逻辑得到其使用的算法

 

gdb动态调试一波,看base加密是给谁解密,是我们输入的值,亦或是程序自带的值,以及其自定义的编码表(base系列加密的原理,这里就不深究了),动态调试知道到了需要解密的字符串以及编码表

继续运行程序,到0x4952eb后即可发现flag

 

用py脚本自定义base64加密,解得flag

import string

import base64

flag = 'tGRBtXMZgD6ZhalBtCUTgWgZfnkTgqoNsnAVsmUYsGtCt9pEtDEYsql3'

std_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

my_table = "6789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345"

flag = flag.translate(string.maketrans(my_table,std_table))

print base64.b64decode(flag)

IDAGolangHelper项目地址
https://github.com/sibears/IDAGolangHelper

参考链接

无符号Golang程序逆向方法解析 https://www.anquanke.com/post/id/170332

golang base64加密与解密 https://studygolang.com/articles/6926

MIPS架构的CTF逆向题--SUCTFbabyre题目writeup https://blog.youkuaiyun.com/xiangshangbashaonian/article/details/83146678

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值