24H&N逆向部分wp
菜鸡新手师傅wp,Re 5/9,记录一下qaq(好久没写博客了,水一篇hh)
最喜欢的逆向题
64位,进主函数之后直接看,要求输入第5位为i,然后后面依次相等,长度为24,就输出flag
按照要求输入即可:
DO YOU KNOW SWDD?
主函数中函数并不多,一直跟进sub_41127B到最后你就会发现就是一个简单的smc
待解密部分:
idapython patch一下即可:
addr = 0x00417000
v5 = "swdd"
for j in range(4):
for i in range(331):
temp = addr+i
value = idc.get_wide_byte(temp)
value ^=ord(v5[j])
ida_bytes.patch_byte(temp,value)
print("OK")
得到加密逻辑如下:
exp:
data = [83,95,86,89,70,79,95,67,71,78,78,95,71,82,75,68,95,75,76,89,69,68,95,73,89,69]#S_VYFO_CGNN_GRKD_KLYED_IYE
for i in range(len(data)):
if(data[i]>=65 and data[i]<=90):
print(chr((data[i]-10-65)%26+65),end='')
else:
print(chr(data[i]),end='')
#I_LOVE_SWDD_WHAT_ABOUT_YOU
hwanna
直接看Assembly-CSharp.dll
直接用python跑一下既可
def a(input, shift):
text = ""
for c in input:
if c.isalpha(): # 检查字符是否为字母
# 使用ord()函数获取字符的ASCII码,然后进行偏移操作,最后使用chr()函数转换回字符
text += chr((ord(c.lower()) - ord('a') + shift) % 26 + ord('a')) if c.islower() else chr((ord(c.upper()) - ord('A') + shift) % 26 + ord('A'))
else:
text += c
return text
data = "justaeasyunitygame"
aaa = a(data,5)
print(aaa)
#套上flag头即可H&NCTF{ozxyfjfxdzsnydlfrj}
childmaze
一开始用的ida7.5,符号表一直载入不了,f5也看不了,动调也调不起来,纯坐牢了属于是,但看到一堆函数,同时有点混淆的感觉,寻思用d810去去混淆,用ida8.3打开了一下,发现可以正常载入符号表,看出来是rust,动调还是调不起来,难绷,大概逛了一下代码,找到应该是密文
没有逆向逻辑,就是在走完所有地图之后正常解密,用python跑一下直接出了
data = "H'L@PC}Ci625`hG2]3bZK4{1~"
for i in range(len(data)):
print(chr((ord(data[i]))^(i%7)),end='')
#H&NCTF{Ch411enG3_0f_M4z3}
Baby_OBVBS
查看vbs源码发现是一长串,确定是混淆无疑,execute是执行,即是执行后面这一长段
跑起来用ce附加了一下,查找了一下关键字符串"Enter the key:",发现了真正的代码逻辑:
dump下来之后确认为输入的key做了一个MD5的加密之后判断,然后flag是一个RC4的加密
而解密的关键是找到MD5的密文和RC4的密文,ANtg和eAqi,显然从dump下来的东西里已然没有这个信息了
所以还是得从给的vbs脚本入手,执行脚本之后能看到去混淆的代码,所以直接将所需要执行的带混淆的输出一下即可,将原先脚本中开头命令换成 WScript.Echo(vbs里的语法,类似c里面的printf),修改一下保存为vbs,运行并能看到代码逻辑以及需要的密文
加密部分还是带了base64加密,正常解码就能看出是MD5和RC4,但现在不用了,直接取开头的两个密文即可,MD5解完之后是H&NKEY
,然后直接RC4解就行,找个在线网站解了
ase64加密,正常解码就能看出是MD5和RC4,但现在不用了,直接取开头的两个密文即可,MD5解完之后是H&NKEY
,然后直接RC4解就行,找个在线网站解了
[外链图片转存中…(img-1szMOfgs-1715792113798)]
H&NCTF{VBS_1s_@_s0_7unny_an4_pow3rfu1_t00l!}