感觉没人打比赛啊…都是自己人
happy_mota
main.exe可以得到一些信息,根据script文件夹下的解密运行一次得到三块flag
根据提示看出11到19层的地图形状为字符,其中少了一层,根据后半flag猜测为Enjoy
1 | print("TSCTF{Enj",end="") |
PatternLock
java绕了dex半天还是一样的,native JNI_Load异或后可以看出,大致猜是一个hook(没细看),异或一下即可。
1 | v9 = list('cig`o') |
happy_string
题目是linux下的smc,前面ptrace反调试,过掉就行。
明显Tea,主程序用v2比较,而v2就算经过加密后也是不变的,用v2加密后的字节解密v1
findcrypto显示blowfish,参考相关源码,没有sub_557DBE6B8493这一项
sub_557DBE6B8B6B是blowfish_decrypt,而输入的key为W3lc0meT0TSCTF!!,对前面的v2进行加密。由于题目是动态flag,所以还是需要还原一次v2的加密过程,其中sub_557DBE6B8493直接复制粘贴伪代码即可。
my_blowfish脚本,库是https://github.com/Rupan/blowfish
1 |
|
动态flag,相关脚本
1 | ''' |
digdig
go语言,一堆digdig_tree函数,正确会输出right,前面main_convert将输入的字符串转为二进制,每个digdig_tree函数会判断一个比特,从而跳转完成二叉树跳转。写个脚本建立二叉树,再找到遍历找到输出right的地方,利用输出right的节点的父节点向上,再判断每一位应当是0或1即可还原flag。
idapython脚本
1 | import ida_name |