easyre
base64加密的反编译代码
1 | |
404
1 | |

1 | |
405 简单逆向
1 | |
1 | |
445

查壳看到是64位程序,放入64ida

观察主要函数是一个循环,编写逆向脚本
注意,因为a为执行过后的字符串,所以要修改判断的范围,
if ( (Str[i] <= 96 || Str[i] > 98) && (Str[i] <= 64 || Str[i] > 66) )
要改成if ((ord(char) <= 94 or ord(char) > 96) and (ord(char) <= 62 or ord(char) > 64)):
1 | |
得到{nss_c{es{r}

**提交flag也不成功,看了一下评论区说程序里a可以用{代替所以flag就是:NSSCTF{nss_caesar} **
1416

看到明文和三个加密函数
第一个是base64加密
第二个是字符串顺序打乱
第三个是自定义加密

1 | |
切割字符串然后拼接,反过来拼接就行
flag+=tmp[13:26]+tmp[39:52]+tmp[0:13]+tmp[26:39]
第一个参数的变化可以得知每次截取的长度为13,第二个参数即为原来str的起始位置


修改一下看会轻松的多

1 | |
encode
发现加密函数
所以是需要找到密文即可解出flag。
可以看出密文就是dword_404000。在该内存空间中找,找到100个数据即为密文。
根据加密逻辑,可以看出没两个数据中高位是ASCII码的高。低位是ASCII码的低位,编写脚本解出


1 | |
exp2
根据加密逻辑,可以看出没两个数据中高位是ASCII码的高。低位是ASCII码的低位,编写脚本解出
1 | |
更新: 2025-06-29 18:49:19
原文: https://www.yuque.com/chaye-apqbl/vsc85q/firbpo49ggcotccz