跟着大佬学RE(二)

[ACTF新生赛2020]easyre

enc='~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(\0x27&%$# !"'
v4='''*F'\"N,\"(I?+@'''
v4=list(map(ord,v4))
print(v4)
#( v4[i] != _data_start__[*((char *)v5 + i) - 1] )
flag=list('ACTF{')+['']*12+['}']
print(flag)
#['A', 'C', 'T', 'F', '{', '', '', '', '', '', '', '', '', '', '', '', '', '}']
for i in range(12):
    flag[i+5]=chr(ord(enc[v4[i]])+1)
print(''.join(flag))

就是一个下标匹配的题

要注意的是字符串都是在 0 处结束,不要少取了

凯撒

也可以直接爆破

[V&N2020 公开赛]strangeCpp

flag 寻找题,估计是藏到那个不明显函数里去了

中间这个数组很可疑,去跟踪一下

估计是要求这个 dword_7ff

hh=0x123
v5=0x242ee21a
for i in range(0,14549743):
    if (i<<8)^(i>>12)==v5//hh:
        print(i)
        break

也是没跑出来

因为 python 的 int 类型没有位数限制

在左移 8 位和乘 291 时都不存在截断和溢出,所以需要手动给他截断一下(& 0xFFFFFFFF)

((i << 8) ^ (i >> 12)) * 291 & 0xFFFFFFFF == 607052314

还是要这么写,得到 123456 


key = 0
for i in range(14549744):
	if ((i << 8) ^ (i >> 12)) * 291 & 0xFFFFFFFF == 607052314:
		key = i
		print ("Key: " + str(key))
		break
data=[  0x26, 0x2C, 0x21, 0x27, 0x3B, 0x0D, 0x04, 0x75, 0x68, 0x34,
  0x28, 0x25, 0x0E, 0x35, 0x2D, 0x69, 0x3D]
for i in range(len(data)):
    print(chr((data[i]^key)&0xff),end='')
    # ensure range:0-255
    #𞉦𞉬𞉡𞉧𞉻𞉍𞉄𞈵𞈨𞉴𞉨𞉥𞉎𞉵𞉭𞈩𞉽
    # flag{MD5(theNum)}

123456进行 md5加密,取 32位小写的

[V&N2020 公开赛]CSRe

一些莫名其妙的东西,要么是有壳,要么是被混淆了

这个函数还怪多的,应该是被混淆了

需要用到 de4dot 工具

de4dot xxx.exe

 需在de4dot.exe目录下进入命令行,会在xxx.exe文件目录下生成一个xxx-clean.exe

.net 写的程序在 dnspy 或者 Reflector 打开

得到 314159 ,return

要记得去掉 3,9,re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值