无符号GoLang逆向经历

栏目: Go · 发布时间: 6年前

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

所需工具:

ida pro,IDAGolangHelper,easyGo程序

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

无符号GoLang逆向经历

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

无符号GoLang逆向经历
无符号GoLang逆向经历

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

无符号GoLang逆向经历

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

无符号GoLang逆向经历

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

无符号GoLang逆向经历

用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.csdn.net/xiangshangbashaonian/article/details/83146678


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android编程权威指南(第3版)

Android编程权威指南(第3版)

比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具