http://www.homura.cc/CGfiles/xor
下下来之后是一个MAC的程序,linux无法运行,所以直接IDA分析
这个是main函数的代码,简单来说就是把输入的东西经过一层一层的处理之后跟一个字符串常量比较。func1到xfun5都是处理的函数,处理的过程都是异或运算。所以要做的就是把字符串常量导出来然后跟着这个程序异或回去就好了。
这个是那个字符串常量,但是有很多0,我不会去掉那些0,有大佬知道的话可以告诉我(●’◡’●)
所以我就通过下图的操作导出数据了
简单来说就是把它转换成数组合之后导出成c语言的16进制数组格式,然后粘贴到python数组里面,再用python每隔3个输出一次数组内容,最后得到的就是真正的字符串常量了。
然后把处理过后的字符串常量搞到另一个脚本里面
source=[ 21,31,18,20,8,58,70,44,7,27,81,19,63,87,8,5,63,48,50,81,82,2,110,120,22,124,110,97,112,72,28,59,50,42,19,69,7,42,24,12,110,65,112,4,6,110,92,0,66,69,112,90,2,4,14,76]
def a():
for i in range(10):
source[i+30]^=0xAB
pass
for i in range(10):
source[i+20]^=0xEF
pass
for i in range(10):
source[i]^=0xAD
pass
for i in range(10):
source[i+10]^=0xBE
pass
for i in range(16):
source[i+40]^=0xEF
pass
for i in range(56):
source[i]^=0xDE
pass
target=''
for var in source:
target+=chr(var)
pass
print(target)
pass
a()
然后运行
flag{I5_th1s_7he_PR1c3_I'M_PAyiNG_f0r_my_pA57_m1stAk35?}