happyctf
1234s ='rxusoCqxw{yqK`{KZqag{r`i'for i in range(len(s)): print (chr(ord(s[i])^0x14),end = '')# flag{Welcome_to_Neusoft}%
xxxorrr
通过字符串交叉引用,找到函数。看到是一个xor后的比较
123456789101112131415s2 = [0x56, 0x4E, 0x57, 0x58, 0x51, 0x51, 0x09, 0x46, 0x17, 0x46, 0x54, 0x5A, 0x59, 0x59, 0x1F, 0x48, 0x32, 0x5B, 0x6B, 0x7C, 0x75, 0x6E, 0x7E, 0x6E, 0x2F, 0x77, 0x4F, 0x7A, 0x71, 0x43, 0x2B, 0x26, 0x89, 0xFE, 0x00]s1 = 'qasxcytgsasxcvrefghnrfghnjedfgbhn'a = ""flag = ""print(len(s1))print(len(s2))for i in range(33): temp = ord(s1[i]) ^ (2 * i + 65) flag += chr(temp ^ s2[i])print(flag+'}& ...
1000Click
用IDA打开
shift + f12
看到有很多flag。找到唯一一个被引用过的flag,就是正确的
lucknum
IDA打开就是flag
flag{c0ngr@tul@ti0n_f0r_luck_numb3r}
easyRE1
用IDA打开就是flag
flag{db2f62a36a018bce28e46d976e3f9864}
Reversing-x64Elf-100
非常简单的一个加密方式:
1234567a = ["Dufhbmf", "pG`imos", "ewUglpt"]flag = ''for i in range(12): flag += chr(ord(a[i % 3][2 * (i //3)]) - 1) # 要用整除//print(flag)#Code_Talkers
666
main函数
看到是一个输入的东西,进行了encode加密后,和内存中已存在的内容进行比较。
encode每3个3个的进行加密。
找到enflag:izwhroz””w”v.K”.Ni
写解密:
12345678enc = 'izwhroz\"\"w\"v.K\".Ni'flag = ""key = 18for i in range(0,18,3): flag += chr((ord(enc[i]) ^ key) - 6) flag += (chr((ord(enc[i + 1]) ^ key) + 6)) flag += (chr((ord(enc[i + 2]) ^ key) ^ 6))print(flag)
easyxor
简单但是欣怡的一个题:
看r数组:
12345678enc = [53,47,47,50,40,20,39,59,61,112,60,10,61,115,58,10,31,115,61,102,33,28,109,40]key = ['S','C','N','U']flag = ""for i in range(len(enc)): temp = enc[i] ^ ord(key[i%4]) flag += chr(temp)print(flag)
insanity
难度等级:3
这个题:直接写就好了。
花指令
这篇文章讲得好
https://blog.csdn.net/m0_46296905/article/details/117336574
如下介绍我遇到过的花指令
在我看来,我现在遇到的花指令总体的结构类型是:
1234jmp a xxxxxxa:
中间的xxx 就需要我们来nop掉,在nop掉之后进行“u” “c” “p”
jnz 和jz 的花指令:
一般来说:花之林就是在代码段中,突然下面有数据段的东西,很明显下面的数据段应该是代码段的。如上:这里就需要将下面的call 给nop掉
Call 和 Ret的花指令:
这里call sub_4116CE后,这个函数的作用就是:下面改变了一下栈中的值,将ret返回的地址进行了修改。没有实际的意义。将整段进行nop。
1因为每次都是CALL到这里的,所以POP EAX实际上是把返回地址(开头的c7所在地址)传给EAX,经过一番处理后通过PUSH EBX换成新的返回地址,分析代码逻辑会知道这个返回地址会指向末尾的8d之后的一个字节。这段代码等价于做了一个JMP 0x17的操作。