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 5∗4的迷宫,将前面发现的初始字符串按 5 ∗ 4 5*4 5∗4排列,也就是
*1111
01000
01010
00010
1111#
继续分析
也就是需要从
∗
*
∗走到#,中途不能出现1,(走0不走1)
也就是需要:下下下右右上上右右下下下
换成程序里要求的1234就是:222441144222
提交flag{222441144222}
显示正确