reverse_re2
难度等级:5
main函数这个题是一个花指令的题
每个题都要从main函数开始
跟过去看看
这里很容易的知道,最后是指向了8D下面那行的地址。
也可以动态的看看
我们知道了在ret后就取call sub_133E31。
中间那一段的代码都没有啥用处。我们nop掉
,因为这里有好多的这种代码,都需要nop掉。
我这里肯定是不完善的。虽然能f5了,但是感觉还是不是很完美。
F5看看
sub_402DEC函数
我这里问了AI:
RC4算法主要包括以下步骤,这些步骤与代码段中的操作相似:
初始化:通常,RC4算法开始时会进行初始化,以生成一个伪随机的密钥流。在这个过程中,代码段中的 v8、v7、v6 变量可能对应于RC4算法中的状态向量和S盒初始化。
Key-Scheduling:在RC4中,生成一个伪随机密钥流的关键部分是键调度。在代码段中, v8 和 v7 变量用于索引S盒并交换S盒中的值,这是RC4的关键操作。
伪随机字节生成:RC4算法使用状态向量和S盒生成伪随机字节,然后使用这些字节与明文进行异或运算,以实现加密操作。在代码段中, v4 和 v5 变量似乎是用于保存从S盒 ...
EasyRe
用IDA打开
直接就看到了对比了24次
然后点aXircjR..这里,发现不是24个字符
将他转化成24个数组组合
然后用shift + e
将字符串提取出来
12345678enc = "xIrCj~<r|2tWsv3PtI\x7Fzndka"flag = ""for i in str(enc): flag += chr((ord(i)^6) - 1)print(flag)print(flag[::-1])#flag{xNqU4otPq3ys9wkDsN}
asong
难度等级:5
拿到这个题,给了你三个附件。第一次遇到。
asong加密程序、out加密结果、that_girl加密引用的数据
out:一堆乱码二进制
that_girl:66行英语文字
asong用IDA打开
main函数
sub_400AAA函数
sub_400936
所以sub_400AAA这个函数的作用就是“词频统计”
sub_400E54
sub_400D33
sub_400DB4
上面就是对这个的主要分析了。
就是给了一篇文章,统计了里面的字符出现的次数,然后遍历flag中的字符,找出flag每个字符出现的词频,放在一个数组中。将这个词频进行了加密。
我们现在已经知道了这个“文章”所以我们可以得出每个字符对应的词频。通过逆向加密算法,得出词频,通过找表,就能找出flag。
解题获取词频打开that_girl
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 ...
rot13加密
rot13加密其实也就是位移加密,回转13位罢了。
要在题目中突然的看出来的话,就是争对英文字母,进行13位13位的移动。这里贴几张图片。
数独
首先数独,得是一个”9 X 9“ 一共81个,一般题目中0表示空格。
一般都是在线求解的:
https://shudu.gwalker.cn/
llvm编辑器
llvm 和 gcc。
拿到是一个.bc文件。就用如下命令得到能读的文件。
.bc文件,用clang编译为可执行文件。
1clang 文件名字.bc -o 文件名字
PE头修复
这里,慢慢补充吧。先写我遇到的错误的。
首先DOS头得是4D 5A 。 ->MZ
然后末尾是一个指向PE头的地址
PE头得是50 45
NewStarCTF2023
Week 1easy_RE打开就是flag
咳upx -d 解开后每个字符-1就得到flag
Segmentsshift + f7
直接看到flag【自己拼接一下】
ELF首先一个简单的xor 然后是一个base64
在线网站首先解开base64 然后再自己写py解开encode
1234567enc = "V\QWkt $_e'^_ggXQ'u|v!c/m"flag = ""for i in enc: flag += chr((ord(i) - 16) ^ 0x20)print(flag)
Endian一个简单的异或,然后16进制转字符串的时候发现是小端序。改下顺序就好了
AndroXor用jadx,找到后,就是一个简单的xor
12345678enc = [14, b'\r', 17, 23, 2, b'K', b'I', b'7', b' ', 30, 20, b'I', b'\n& ...
2019红帽杯 easyRE
首先看到有一个base64相关的字符串,上面又是以一个很奇怪的字符串【很长】猜测是base64加密的。
这里用base64解密,我还以为就这么简单呢..
得到一个没啥用的网址…
然后看了WP得知是其他地方找flag
这一托不知道,但是可以猜测key 一共有4个字符【因为下面是%4】然后最低位xor 出来是f,最高位xor出来是g。
猜测key 和 字符串进行xor 得到的是“flag”
所以写exp
1234567891011a=[0x40, 0x35, 0x20, 0x56, 0x5D, 0x18, 0x22, 0x45, 0x17, 0x2F, 0x24, 0x6E, 0x62, 0x3C, 0x27, 0x54, 0x48, 0x6C, 0x24, 0x6E, 0x72, 0x3C, 0x32, 0x45, 0x5B]b=['f','l','a','g']c=[]for i in range(4): c.append(a[i]^ord(b[i]))print(c) #[38, 89, 65 ...
base替换表
主要是用到一个在线的工具:CyberChef
如果是base64就找from base64
如果是base58就找from base58
在Alphabet里面输入替换的表
input输入密文