xor
按题目意思本题关键在于异或,将程序拖入IDA中,发现有主函数
快速分析其逻辑后,可以知道_b为本体中输入字符串所放置的变量,其由memset初始化,再由getline接受字符串
可以看见flag应该为一个33位的字符串,且异或从第二个字符开始
_b 与global相比较得出结论,尝试搜索global,无果
打开字符串表,发现一个疑似目标字符串
从"f"到"O"一共33 个字符,故编写脚本(也可以一个一个复制),将字符相异或
可以得到答案为flag{QianQiuWanDai_YiTongJiangHu}
hello world
apk文件,拖入Android Killer中
打开MainActivity,发现flag
reverse3
将程序拖入IDA中,看见ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=为base64编码的基础表
常规打开字符串表,发现有一串奇怪的字符串
反编译后看主函数逻辑
故想到那串字符串str2 e3nifIH9b_C@n@dH 是最后正确的结果,那么可以通过伪代码逻辑反推flag
反向解出Str2原来的值为
得到flag{i_l0ve_you}
不一样的flag
打开main函数
以及同时运行程序,发现只有按照一定规律输入1 2 3 4这些数字才能保证程序不退出
v3中装载了目标字符串
以上为推测的函数逻辑
以上为验证移动的逻辑,因此我们知道v3中装的字符串是一个5*5的矩阵,需要我们按照不踩到1且从左上角走到#处应该可以得出答案(推测的过程全在注释中)
*1111
01000
01010
00010
1111#
因此flag应该为222441144222(记得包在flag里)
SimpleRev
打开main函数,发现加密函数Decry
打开Decry函数,src,和v9[0]里面装载了两个十六进制长整型
看到join函数推测应该将v9转化为字符串,且双击进入key3发现key3确实为字符串‘kills’
同理图中的key1 == "ADSFK"
注意一件事,join和strcat的方式均为小端序
故最后拼接的结果应该为
之后是一段转换
最后根据这段逻辑编写脚本爆破
最后一个问题,爆破的字符组的顺序不同会导致结果不同,我也是看了答案才知道,原因是取了模之后大小写中会出现多对一的解密映射
flag{KLDQCUDFZO}