HECTF 逆向部分wp – 作者:pioneer先锋

HECTF 逆向部分wp

逆向还是太菜了,只会Hello_Re和game1。。。

1.Hello_Re

图片[1]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科查壳,发现无壳,使用ida打开。shift+F12查找字符串,看到关键信息。图片[2]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科

双击它,然后选择跳转–交叉引用列表图片[3]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科

跳转到相关位置后按F5得到C程序。

if ( strlen(&v4) == 25 && judge0(&v4, 26) ),可以得知flag长度是25,跳转到关键函数处judge0处。

图片[4]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科阅读代码,可知a1[0]=67,a1[1]=84,a1[2]=70,a1[3]=123,a1[24]=125,这些10进制转换为字符

即为C T F { }。进入函数judge1中,可以看到关键数组arr,将其中数据提取出来。图片[5]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科

分析代码,发现最终的数组是由(一个数+i)和(i+1)做异或运算得到的,编写python程序,跑出flag。

附上python程序:

#HECTF_Hello_re.py

# author:pioneer先锋

a = [’42’,’56’,’45’,’7F’,’32’,’6E’,’4E’,’3D’,’56’,’3B’,’78’,’53’,’4C’,’4F’,’50’,’62’,’74’, ’73’, ‘7F’,’4B’,’73’,’21’,’56’,’7F’,’64’]
f = “”
for i in range(25):
b = int(a[i], 16)
c = i+1
d = hex(b^c)[2:]
f += d
flag = ”.join([chr(int(s, 16)) for s in [f[j:j + 2] for j in range(0, len(f), 2)]])
print(flag)

图片[6]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科

2.game1

图片[7]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科同样,先查壳,无壳直接拖入ida打开。shift+F12,找到关键信息。

图片[8]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科按上题方法跳转到其位置,然后F5得到程序。

图片[9]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科阅读程序,跳转到_data_start__该数组,得到bxukv{pW1SiFW_J0_jV},这应该是原始数据,只需要对其进行运算,即可得到flag。

对数组中的字符,如果它的十进制(_data_start__[i])小于等于96或者大于122:

(1)如果_data_start__[i]小于等于64或者大于90,直接把他赋值给v4;

(2)否则把(_data_start__[i] – 65 + a1[i % 5]) % 26 + 97赋值给v4。

否则把(_data_start__[i] – 97 + a1[i % 5]) % 26 + 65赋值给v4。

最后再把v4重新放回到_data_start__[i]中,这段程序中的a1数组可以根据后面的if判断条件解出来。

a1的求解就不做赘述了,直接给出:a1 = [6,7,8,9,10]。

附上python程序:

#HECTF_game1.py

# author:pioneer先锋

# 将字符串bxukv{pW1SiFW_J0_jV}转化为10进制
a = [98,120,117,107,118,123,112,87,49,83,105,70,87,95,74,48,95,106,86,125]
b = [6,7,8,9,10]
c = []
f = ""
for i in range(len(a)):
if(a[i]<=96 or a[i]>122):
if(a[i]<=64 or a[i]>90):
v4 = a[i]
else:
v4 = (a[i] - 65 + b[i % 5]) % 26 + 97
else:
v4 = (a[i] - 97 + b[i % 5]) % 26 + 65
c.append(v4)
f += hex(v4)[2:]
flag = ''.join([chr(int(s, 16)) for s in [f[j:j + 2] for j in range(0, len(f), 2)]])
#print(c)
print(flag)

图片[10]-HECTF 逆向部分wp – 作者:pioneer先锋-安全小百科

来源:freebuf.com 2020-11-26 13:14:55 by: pioneer先锋

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论