BUU-逆向1-8

题目一览

1、easyre 1

2、reverse1 1

3、reverse2 1

4、内涵的软件 1

5、新年快乐 1

6、xor 1

7、helloword 1

8、reverse3 1

1、easyre 1

exeinfo了解到是64位无壳

IDA打开,shift+F12查看字符串

flag{this_Is_a_EaSyRe}

2、reverse1 1

exeinfo了解到64位无壳

IDA打开,shift+F12查看字符串

这里涉及到了flag

这里看到了这个字符串与flag格式相似

跳转过来发现被引用

跳转过来

F5查看伪代码

这里是输入str1与str2进行比较,相同则为flag

str2为{hello_world}

上面有一个判断,将111换为48,转为char即为

将o转换为0

flag{hell0_w0ld}

3、reverse2 1

64位的ELF文件

shift+F12查看字符串

跟前面那个差不多,跟进right flag

F5转换伪代码

相同的套路,输入的字符串与flag进行比较,相同则正确

flag就是{hacking_for_fun}

上面的ASCII码转字符就可以了

把上面的字符串中的i和r换为1

flag{hack1ng_fo1_fun}

4、内涵的软件 1

exeinfo了解到32位无壳

shift+F12查看字符串

main函数F5查看伪代码

v5在这里并没有被调用

直接把DBAPP换为flag提交就可以了

flag{49d3c93df25caad81232130f3d2ebfad}

5、新年快乐 1

exeinfo查看,32位upx壳

upx.exe -d脱一下壳

shift+F5看一下字符串

main函数F5看一下伪代码

根据提示,字符串应该就是HappyNewYear!

6、xor 1

exeinfo查看一下,64位无壳

拖入IDA,shift+F12查看字符串

直接F5查看一下伪代码

第一个if很明显,表示flag长度为33位

后面就是一个for循环,进行异或运算

最后判断__b和global是否相等,相等则返回success

这样的话,flag应该就是global的值

双击跟踪找到global的值

写脚本运算一下

这里的数组可以直接shift+E得到

test = [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, 0x06, 0x68, 0x0F,
  0x47, 0x32, 0x4F, 0x00]
flag = [0 for i in range(len(test))]
flag[0] = 'f'
flag1 = 'f'
for i in range(1,len(test)):
    flag[i] = test[i] ^ test[i-1]
    flag1 += chr(flag[i])
print(flag1)

得到flag

flag{QianQiuWanDai_YiTongJiangHu}

7、helloword 1

附件是个APK文件,使用APKIDE打开

下载地址:https://down.52pojie.cn/Tools/Android_Tools/ApkIDE_v3.3.rar

找到主函数,直接就看到了flag

8、reverse3 1

exeinfo查看信息

32位无壳

IDA32位打开,shift+F5查看字符串

跟踪一下right flag

找到main函数,F5查看一下伪代码

输入的数据进行了一次sub_9A10BE这个算法的处理,处理后的结果赋值给v4

使用strncpy函数把v4的数据赋值给Destination

v11为Destination的长度

for循环对Destination的数据进行了一下移位(ASCII码层面)

v5为移位后的Destiantion的长度

移位后的Destination与Str2相同的话,正确

Str2为这个

e3nifIH9b_C@n@dH

需要得到flag的话应该就是把上面处理的过程反过来

Str2——>移位——>sub_9A10BE算法解码

这样的话关键就是sub_9A10BE这个算法是什么算法

双击跟踪,这个算法是直接调用的sub_9A1AB0,变量为三个

可以了解到这个是base64加密算法

其实根据一开始的字符串检索那里就能猜到

这样的话就可以用以下的脚本处理一下

import base64

test = "e3nifIH9b_C@n@dH"
flag = ""
for i in range(len(test)):    //对每个字符进行循环处理
    flag += chr(ord(test[i])-i)    //伪代码中的处理是循环j,在循环中每次+j,这里就是反过来每次-
print(base64.b64decode(flag))    //移位的字符串进行一下base64解码就可以了

flag{i_l0ve_you}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值