buuctf re刷题1

零碎操作:

ida shift+e 指定字符串的特定格式

ida shift +f12 看字符串

ida ctrl+x 指定字符串交叉引用

reverse3

找到字符串 e3nifIH9b_C@n@dH

每个字符与对应下标相减后base64解码

import base64
str=[0x65, 0x33, 0x6E, 0x69, 0x66, 0x49, 0x48, 0x39, 0x62, 0x5F, 
  0x43, 0x40, 0x6E, 0x40, 0x64, 0x48, 0x00]
for i in range(len(str)-1):
    str[i]=chr(str[i]-i)
str.pop()
str=''.join(str)
print (str)
print (base64.b64decode(str))

helloword

是Android的apk文件,用apk ide 打开

找到helloword的main那里,看到flag

不一样的flag

是一个走迷宫

应该要观察到后面判断的1和**#**,与上面有个字符串长度为25

*11110100001010000101111#

可以分为5列

*1111

01000

01010

00010

1111#

对应flag是

flag{222441144222}

SimpleRev

小端程序的话,转换ascll码要反一下,(应该)

可得到两个字符串

text=killshadow

key=ADSFKNDCLS

转换为小写key=adsfkndcls

思路就是把key的每个字符经过结合flag的每个字符,特定操作后变成text的每个字符

脚本的话用枚举,然后模仿程序的操作,满足条件就break然后找下一个字符

(感觉逆着写写不出来)

#SimpleRev
text=['k','i','l','l','s','h','a','d','o','w']
key=['a','d','s','f','k','n','d','c','l','s']
flag=[]
v3=0
for i in range(len(text)):
    for k in range(65,123):
        if ( ((k<=96 or k>122)and (k>64 and k<=90))or (k>96 and k<=122) ):
            if (ord(text[i])==(k-39-ord(key[v3%len(text)])+97)%26+97):
                flag.append(chr(k))
                v3+=1
                break
flag=''.join(flag)
print(flag)

Java逆向解密

用jd-gui打开

然后观察下,就是flag每个ascll+64异或0x20要等于key的每个数值

key=[180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 
        133, 191, 134, 140, 129, 135, 191, 65]
flag=[]
for i in range(len(key)):
    flag.append(chr(key[i]-64^0x20))
flag=''.join(flag)
print("flag{"+flag+"}")

[GXYCTF2019]luck_guy

这种elf文件都是小端的,ascll码要反以下用reverse()方法

找到字符串GXY{do_not_

根据程序功能减-1-2,组合就能得到flag了

#[GXYCTF2019]luck_guy
s=[127,102,111,96,103,117,99,105]
s.reverse()
for i in range(1):
    for i in range(len(s)):
        if (i%2==1):
            s[i]-=2
        else:
            s[i]-=1
for i in range(len(s)):
    s[i]=chr(s[i])
flag=''.join(s)
print('GXY{do_not_'+flag)

[BJDCTF2020]JustRE

发现字符串BJD{%d%d2069a45792d233ac}

两个fomat,跟进一看有19999,和0两个参数,放进去就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值