日常破解---XCTF_APP1获取flag记录


一、题目来源

  来源:XCTF社区安卓题目app1


二、解题记录

    1、首先安装到模拟器中运行一下,如下图所示,点击一下按钮,弹出提示年轻人不要耍小聪明哦

    2、将APK文件拖进AndroidKiller中反编译,直接搜索关键字年轻人以确定按钮触发的事件位置,搜索结果如下图所示:

    3、偷懒不看smali代码了,直接将apk拖进jeb中查看java代码(别问我为啥不要AndroidKiller,jeb转换出的java确实准确一些),java代码如下,分析代码可发现:程序首先获取输入框的值放进变量v1中,然后获取app的版本名称放进变量v3中,获取app的版本号放进变量v4中,接着在一个while循环中,将变量v3中每一个字符与变量v4进行异或操作,然后与变量v1(就是我们输入的flag)每一个字符相比较,若全部相等,则跳出循环,在循环外面又判断了一次我们输入的flag长度与变量v3长度是否相等,若不等,则弹出年轻人不要耍小聪明哦,若相等,则弹出恭喜开启闯关之门!。分析到这里,flag可以很明显看出来就是app的版本名称每一个字符与版本号异或之后组成的字符串就是flag!!!

    4、获取版本号这些可以直接在smali中log就行了,但感觉太烦了,就直接使用Android studio动态调试smali直接查看寄存器的值获取,怎么动态调试就不说了,下图是动态调试获取的版本名与版本号

    5、获取版本名称信息后,写个python脚本跑出flag如下,提交显示恭喜开启闯关之门!




三、总结

    一道很基础的题,不知道总结啥了,就这样吧!!!!

    附上python脚本:

str1 = 'X<cP[?PHNB<P?aj'

for i in str1:
m = ord(i) ^ 15
print(chr(m),end='')

    PS:再次吐槽一波markdown粘贴python代码得把每行代码都tab才好看,需要跑脚本的把第一行第二行的缩进删除就行!!!!!

最新文章

  1. 为.NET Core项目定义Item Template
  2. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
  3. linux修改时区为中国时区(北京)
  4. iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)
  5. ASP.NTE 5 Target framework dnx451 and dnxcore50(转)原文:http://www.cnblogs.com/xishuai/p/aspnet5-target-framework-dnx451-and-dnxcore50.html
  6. lnmp一键安装包删除添加的域名
  7. ERROR: JDWP Unable to get JNI 1.2 environment, jvm-&gt;GetEnv() return code = -2 JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):
  8. poj 1062 昂贵的聘礼(最短路 dijk+枚举)
  9. hunnu 小明的烦恼——找字符串
  10. python——lambda
  11. spring的校验框架 @Validated &amp; BindingResult
  12. Python学习--15 日期和时间
  13. springaop问题——Cannot subclass final class org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages
  14. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
  15. Android Studio教程11-RecycleView的使用
  16. DeepCTR专题:DeepFM论文学习和实现及感悟
  17. 谈谈 final finally finalize 区别
  18. Educational Codeforces Round 8 B. New Skateboard
  19. java编程感悟01
  20. chain33 区块链开发框架诞生记

热门文章

  1. Linux 杀死进程方法大全(kill,killall)
  2. Tomcat爆出严重漏洞,附影响版本及解决方案
  3. 关于使用MyEclipse自动生成Hibernate和Struts出现的jar不兼容的问题(antlr.collections.AST.getLine()I)
  4. iOS路由详解
  5. JavaScript创建函数的方式
  6. Iterator迭代器解决[为何禁止在foreach内增删]
  7. linux系统开机静态分配ip地址
  8. SHELL小练习
  9. UAC table
  10. Lua 学习 chapter30 编写c函数的技巧 - Jow的博客