1.[羊城杯 2020]login
python逆向之后
解函数
顺序换了
md5加密得到flag 58964088b637e50d3a22b9510c1d1ef8
2.[SWPUCTF 2022 新生赛]xor
3.[羊城杯 2020]easyre
先看第一个加密函数
本判断为base64加密
第二个加密函数
分成四段重组
第三个加密函数自定义,写脚本解密
结果base64解密一下
4.[SWPUCTF 2022 新生赛]贪吃蛇
ida64位打开
第三个函数里有flag关键字
直接动调没有结果
jnz改成jz(75改成74)
在跳转下断点,动调
改zf,f8,双击t_flag,提取数据
5.[HNCTF 2022 WEEK2]getflag
ctrl+x找到引用函数
改条件,jg改成jle(7F改7E)
再次运行得到flag
6.[HNCTF 2022 WEEK2]TTTTTTTTTea
xtea加密
from ctypes import * import binascii from Crypto.Util.number import * def encrypt(v, key): v0, v1 = c_uint32(v[0]), c_uint32(v[1]) delta = 0x61C88647 total = c_uint32(0) for i in range(32): v0.value += (((v1.value * 16) ^ (v1.value >> 5)) + v1.value) ^ (total.value + key[total.value & 3]) total.value += delta v1.value += (((v0.value * 16) ^ (v0.value >> 5)) + v0.value) ^ (total.value + key[(total.value >> 11) & 3]) return v0.value, v1.value def decrypt(v, key): v0, v1 = c_uint32(v[0]), c_uint32(v[1]) delta = 0x61C88647 total = c_uint32(delta * -32) for i in range(32): v1.value -= (((v0.value << 4) ^ (v0.value >> 5)) + v0.value) ^ (total.value + key[(total.value >> 11) & 3]) total.value += delta v0.value -= (((v1.value << 4) ^ (v1.value >> 5)) + v1.value) ^ (total.value + key[total.value & 3]) return v0.value, v1.value # test if __name__ == "__main__": key = [0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F] res = [0xC11EE75A, 0xA4AD0973, 0xF61C9018, 0x32E37BCD, 0x2DCC1F26, 0x344380CC] res2 = [0x1, 0x1] for i in range(0, len(res), 2): # print(i) res2 = [0x1, 0x1] res2[0] = res[i] res2[1] = res[i + 1] res22 = decrypt(res2, key) print(str(long_to_bytes(res22[0])[::-1]) + str(long_to_bytes(res22[1])[::-1]), end="") """ Data is : 0x12345678 0x78563412 Encrypted data is : 0xae685ec7 0x59af4238 Decrypted data is : 0x12345678 0x78563412 """
7.[BJDCTF 2020]JustRE
拖进ida查看字符串
发现一个可疑的东西
点进去交叉引用
把两个%换成19999和0
就是flag
8.[NISACTF 2022]sign-ezc++
搜索Human找到关键函数和数组
脚本
9.[广东省大学生攻防大赛 2022]pyre
下载附件
反编译之后
脚本
一开始搞错了%和除不一样
10.[SWPUCTF 2023 秋季新生赛]UPX
指令脱壳
拖进ida
11.[HNCTF 2022 WEEK2]e@sy_flower
拖进ida,发现花指令,nop掉
按p重写main函数
反编译
写脚本