2021-12-1

helloword

有难的题目,也就有简单的题目,就像程序员一辈子编写的第一个程序,极有可能是helloword,它很普通,但是也很让人怀念。你猜这题flag在哪里?让我们怀念第一次编写的easy程序吧!

下载附件是一个apk为后缀名的文件

APK(全称:Android applicationpackage)是Android操作系统使用的一种应用程序包文件格式。简单的说就是安卓手机的应用程序文件,我们平常用的使用如微信、猎豹浏览器等等app应用程序就是apk文件格式。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。

其实跟压缩包差不多,WinRAR就可以解压,得到
在这里插入图片描述
用IDA打开后缀名为dex的文件
在这里插入图片描述
打开之后发现函数特别多

用快捷键shift+F12按字符串查找
在这里插入图片描述
结果直接找到了flag

提交flag{7631a988259a00816deda84afb29430a}显示正确

reverse3

用32位的IDA打开,然后shift+F12
在这里插入图片描述

点击right flag!\n进入

找到主函数代码
在这里插入图片描述
然后是读程序,这个技能待提高啊,我看了好长时间才明白这是在干啥
发现对输入字符先进性了一个加密函数
然后经过了一个for循环变换
最后和str2比较

找到对输入字符进行加密的函数
在这里插入图片描述
我还是没看懂,搜了其他解题,说这是base加密的函数◑﹏◐

解题的话,先看经过base加密和for循环需要得到的str2
在这里插入图片描述
也就是e3nifIH9b_C@n@dH(shift+E快捷键提取)

然后进行for的逆运算

str="e3nifIH9b_C@n@dH"
m=""

for i in range(len(str)):
    m+=chr(ord(str[i])-i)

print(m)

得到:e2lfbDB2ZV95b3V9

然后base64解密

import base64
m="e2lfbDB2ZV95b3V9"
print(base64.b64decode(m))

运行得到b'{i_l0ve_you}'

提交flag{i_l0ve_you}显示正确

不一样的flag

是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交

IDA打开,然后找main,找flag
在这里插入图片描述
反正肯定跟初始的*11110100001010000101111#有关,就是要看中途怎么变换了

读程序,给出you can choose one action to execute
有四个选项,分别是up down left right(上下左右)

我说怎么F5出不来代码啊,该是32位的,我开的64位。

看代码,并努力给个注释
在这里插入图片描述

这种上下左右的,俗称迷宫游戏

解题关键显然在最后的判断

通过最后几行代码判断这是 5 ∗ 4 5*4 54的迷宫,将前面发现的初始字符串按 5 ∗ 4 5*4 54排列,也就是

*1111
01000
01010
00010
1111#

继续分析
在这里插入图片描述

也就是需要从 ∗ * 走到#,中途不能出现1,(走0不走1)
也就是需要:下下下右右上上右右下下下
换成程序里要求的1234就是:222441144222
提交flag{222441144222}显示正确

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值