无符号GoLang逆向经历

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

内容简介:所需工具: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


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

查看所有标签

猜你喜欢:

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

Scrum敏捷软件开发

Scrum敏捷软件开发

Mike Cohn / 廖靖斌、吕梁岳、陈争云、阳陆育 / 清华大学出版社 / 2010-11 / 69.00元

《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近十五年的敏捷实践经验,特别是近四年中针对各种敏捷转型企业的咨询和指导工作,并结合旁征博引的方式,从更高的思想层次对敏捷与Scrum多年来的经验和教训进行深入而前面的梳理和总结,最终集......一起来看看 《Scrum敏捷软件开发》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具