buuctf 不一样的flag

前言:学习笔记。

常规思路: 下载 解压 查壳 

32位>>> 32 IDA Pro打开

常规思路: >>查找字符>>> main()

东点点 西看看 

然后F5 汇编成C伪代码 

正向分析:

第一段代码:

大意吧,,,emmm 就判断是不是 1 2 3 4  数字代表的含义。

第二段代码:(看//)

英语好的话,沃趣 一秒破 T T 

结合这个:

正向分析总结:

整合已知的东西:

①        v5 接收的是 1 2 3 4  【1 2 3 4 代表方向】

②        v3 = " *11110100001010000101111# "

③        v5的取值不同会走不同路线。 v5影响 v3 以及 v4 或者直接退出>>>exit

④        v7 [值] = ’1‘ >>>退出         v7[值] = "#" >>>flag

⑤        输入的顺序是国旗!

        |v5  = 方向 |      |  ’1‘ -->退出 |  |'#'-->flag|          0?        *? 

方向就是坐标,只有游戏才有坐标。》》》那么这就是一个游戏(看来游戏玩的多还是有好处。)

好吧,C语言 class类 学习的时候,老师刚好举例的 >“游戏如何设定的" 坐标(X,Y) HP MP 等等。。

则 说明可以对 ②        v3 = "  *11110100001010000101111#  " 进行变形

数据不长穷举吧【笨方法】 

不过你仔细看会发现 v3的长度等于25 >>>所以我们先对半分变形,不行在穷举。。。

所以就变形啦~ (X,Y)>>>(5,5)的坐标轴

⑤        输入的顺序是国旗!

那就走呗~~

flag{输入的顺序是国旗!} 【嘻嘻】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值