鸽了好久了

easyre

拖进ida直接看到flag

reverse1

明文存储{hello_world},然后把o替换成0.

flag{hell0_w0rld}

helloword

1578815251239

reverse2

和前面的reverse1类似,把i和r换成1

flag{hack1ng_fo1_fun}

新年快乐

脱upx

flag{HappyNewYear!}

内涵的软件

轻松得到DBAPP{49d3c93df25caad81232130f3d2ebfad},提示说得到的flag添上flag{}提交,但是flag{DBAPP{49d3c93df25caad81232130f3d2ebfad}}不正确,试了试flag{49d3c93df25caad81232130f3d2ebfad},正确。

xor

d = [0x66,0x0a,0x6b,0x0c,0x77,0x26,0x4f,0x2e,0x40,0x11,0x78,0x0d,0x5a,0x3b,0x55,0x11,0x70,0x19,0x46,0x1f,0x76,0x22,0x4d,0x23,0x44,0x0e,0x67,0x6,0x68,0x0f,0x47,0x32,0x4f]
for i in range(len(d)-1, 0, -1):
    d[i] = d[i] ^ d[i-1]
print(''.join(list(map(chr,d))))

十分基础的异或题

reverse3

对输入字符串base64后逐位自增偏移值。

1578816867347

s = list(map(ord, list('e3nifIH9b_C@n@dH')))
for i in range(len(s)):
    s[i] -= i
s = ''.join(list(map(chr, s)))
import base64
print(base64.b64decode(s.encode()))

不一样的flag

5*5迷宫

1578817158630

1578817181758

Java逆向解密

gd-gui打开,逻辑很简单,对输入字符加上'@' ^ 0x20

keylist = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
flag = []

for i in keylist:
    flag.append( i - ord('@') ^ 0x20 )
print(''.join(list(map(chr, flag))))

findit

应该只是个MISC题,以逆向的思路做我没做出来。

按照常规流程查看代码,发现代码写的一团糟,很多变量应该有值,结果没有,有的只申请了变量,就接着判断是否和输入字符串相等,等等。

还有,题解中说是凯撒,但是代码中并没有凯撒的部分。真的有点坑。

代码中没有字符数据,但是samli中有,没有编译出来。

1578896795466

d = '''0x70s
        0x76s
        0x6bs
        0x71s
        0x7bs
        0x6ds
        0x31s
        0x36s
        0x34s
        0x36s
        0x37s
        0x35s
        0x32s
        0x36s
        0x32s
        0x30s
        0x33s
        0x33s
        0x6cs
        0x34s
        0x6ds
        0x34s
        0x39s
        0x6cs
        0x6es
        0x70s
        0x37s
        0x70s
        0x39s
        0x6ds
        0x6es
        0x6bs
        0x32s
        0x38s
        0x6bs
        0x37s
        0x35s
        0x7ds'''
dlist = eval("[%s]" % d.replace('        ',',').replace('\n', '').replace('s',''))
d = ''.join(list(map(chr, dlist)))
print('初始:%s' % d)

for offset in range(26):
    flag = []
    for i in dlist:
        if ord('a') < i < ord('z'):
            if i + offset > ord('z'):
                flag.append(i + offset - 26)
            else:
                flag.append(i + offset)
        else:
            flag.append(i)
    print('偏移%d : %s' % (offset, ''.join(list(map(chr, flag)))))

简单注册器

安卓逆向,输入字符串满足下面的判断即可获得flag

(str.length() != 32 || str.charAt(31) != 'a' || str.charAt(1) != 'b' || str.charAt(0) + str.charAt(2) - '0' != '8')

构造0b8wwwwwwwwwwwwwwwwwwwwwwwwwwwwa,然后输入到程序里。

1578986693467

相册

看到有native层,我开心死了。

1578987252304

base64后得到flag

Last modification:September 9th, 2020 at 04:02 pm