2016 alictf Timer writeup
Timer-smali逆向
参考文档:http://blog.csdn.net/qq_29343201/article/details/51649962
题目链接:
https://pan.baidu.com/s/1jINx7Fo (在里面找相应的名字就行)
题目描述:
每秒触发一次计算,共有200000秒,答案参与计算,不可能等待下去。
使用工具:
Android Killer,jadx-gui
解题方法有多种,我参照网上的一种方法。通过对native层,代码的还原,计算出200000秒后的关键变量k,传入主调用,得到答案
解题过程:
System.currentTimeMillis()相当于是毫秒为单位,获取当前时间
先是把单位变成秒,然后加上200000秒
第二块逻辑,用于筛选秒数的自定义函数,可以忽略,之后按代码逻辑就行
第三块逻辑,主程序段,包含最后打印flag值的代码段
分成三段来看:
第一段:super继承,调用页面设计框架,实例化handler函数
第二段:t的作用在于将时间一点一点减少,beg的值在前面,代表一开始时间,now代表现在的时间
第三段:当差值为0或小于打印flag,否则调用is2函数判断,true,k+100,false,k-1
所以有了下面的解密程序
def is2(n):
if (n <= 3):
if (n > 1):
return True
return False
elif (n % 2 == 0 or n % 3 == 0):
return False
else:
i = 5
while (i * i <= n):
if (n % i == 0 or n % (i + 2) == 0):
return False
i += 6;
return True; def main():
time = 200000
k = 0
while time > 0:
if is2(time):
k += 100
else:
k -= 1
time -= 1
print(k) if __name__ == '__main__':
main()
将得到的k值传给native代码,此时的k是经过200000运算的k,传进去直接返回结果
在传入native的时候要注意,首先要确定run函数的位置,这一块方法结束了,没找到逻辑,
通过字符串搜索找到run函数的位置,在MainActivity$1.smali中
直接将k传入不用运行200000次,需要更改"The flag is:"之前的关键跳转
if-gtz v0, :cond_0 改为 if-ltz v0, :cond_0
根据分析,k的值是v3的值,所以要在获取v3之后,修改v3的值
重打包,得到flag
2016 alictf Timer writeup的更多相关文章
- H4CK1T CTF 2016 Mexico-Remote pentest writeup
进去网站之后发现连接都是包含类型的,就能想到文件包含漏洞(话说刚总结过就能遇到这题,也算是复习啦) 这里用php://filter/read=convert.base64-encode/resourc ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- zctf 2016 android writeup - Jieming的博客
本文为2016年zctf中android的writeup. 首先点我下载题目.使用jeb反编译,对username和password进行部分验证后,再将username+password及一个数据库查 ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- 2016第二届陕西省网络空间安全大赛WriteUp
2016年5月28号(正式比赛) 有选择题和实践题,俩队员在弄选择题时,我去拿了web1的一血. 0x01 web 是一道代码审计题,发包,返回了源代码: <?php if (isset($_G ...
- AliCTF 2016
上上周参加了阿里的CTF,靠着最后绝杀队伍有幸拿到了国内第一名,也顺利进入了XCTF Final.把自己做的几个题简单写了下,发出来也算个总结吧. PWN-FB 经典的null byte overfl ...
- IntelliJIdea 2016.2 使用 tomcat 8.5 调试spring的web项目时,bean被实例化两次导致timer和thread被启动了两遍的问题的解决
今天新搭建了一个spring的web项目,项目启动时会启动一个线程,线程里定时执行任务,另外还启动了一个定时器,每秒钟统计系统吞吐量等业务性能数据.但是调试的时候惊奇的发现定时器和线程均被启动了两次. ...
- BUGKU-逆向(reverse)-writeup
目录 入门逆向 Easy_vb Easy_Re 游戏过关 Timer(阿里CTF) 逆向入门 love LoopAndLoop(阿里CTF) easy-100(LCTF) SafeBox(NJCTF) ...
随机推荐
- POJ 2774 Long Long Message (Hash + 二分)
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 34473 Accepted: 13 ...
- 【转载】 qml: MouseArea重叠问题;
原文: https://blog.csdn.net/qq_15024587/article/details/80000443 MouseArea控件大家应该是很熟悉的了. 使用起来也是非常方便的说 ...
- 2018年度最优秀mac软件及游戏推荐,个个万里挑一
今天和大家带来2018年度最优秀Mac软件和游戏合集,个个万里挑一,2018年,风云社区(scoee.com)分享了上数千款优秀的Mac软件和游戏,结合用户反馈,精选出各个类别的优秀的Mac软件,推荐 ...
- RHCSA考试真题
2018年 RHCSA考试真题... ------------ 考前需要做的基础 破解root密码 KVM虚拟机与VM虚拟机 主机名:station.domain1.example.comIP地址:1 ...
- maven_环境变量配置
- python 基础技巧
多个字典合并 >>> d1 = {'name' : 'revotu', 'age' : 99} >>> d2 = {'age' : 24, 'sex' : 'mal ...
- java io系列24之 BufferedWriter(字符缓冲输出流)
转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_24.html 更多内容请参考:java io系列01之 "目录" Buffere ...
- 16、JDBC-DBUtils封装
使用DBUtils写个通用CURD小工具 依赖配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...
- java如何调用对方http接口(II)
java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...
- [Java JNI] [Windows] [Visual Studio] [DLL] [UnsatisfiedLinkError]
有时候使用 GCC for Windows 生成 DLL 动态链接库时, 由于各种原因, 即使加载了动态链接库, JVM 仍然找不到符号, 从而产生 java.lang.UnsatisfiedLink ...