BUUCTF第八题reverse3、BUUCTF第九题不一样的flag解题思路

第八题reverse3

查壳

32位文件,无壳,用32位IDA打开

检索字符串

可能有base64加密,另外我们注意到“right flag”这个字符串,交叉引用找到主函数,查看伪代码

分析伪代码可知,如果str2与Destination相等则输出flag正确,而Destinantion与v4的值相等,v4的值由函数sub_4110BE对v3、v14、str作用得来,所以要分析这个函数的作用。

双击sub_4110BE查看

与base64的相似,可以判断该函数的作用是base64加密。

查看str2的值

接下来就可以写一个脚本,带入str2的值进行base64解密从而逆推出flag

import base64
str2 = "e3nifIH9b_C@n@dH"
flag = ""
le = len(str2)
for i in range(0, le):
    flag += chr(ord(str2[i]) - i)
print(base64.b64decode(flag))

解得flag为{i_l0ve_you}

第九题 不一样的flag

查壳

32位文件,无壳,用32位IDA打开。

检索字符串

其中有一个字符串“.rdata:0040306C    00000026    C    \nok, the order you enter is the flag!”。可能位于flag所在的函数,对其交叉引用并查看伪代码。

分析伪代码:将v3赋值为“*11110100001010000101111#”。将接收的值赋给v5,while循环嵌套if,根据v5的值进行不同操作。

重点是v3的值,这样的字符串很像迷宫题,字符串一共有25个字符,则应该是5X5的排列方式,在文本文档里排一下序,可以得到一个类似迷宫的结构。

其中0代表路径,1代表墙壁,从*出发沿路径走到#。

我们运行一下原程序。

上下左右四种操作都有对应的数字,联系迷宫可以得出一串数字222441144222,则flag就是 222441144222。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值