2020 DJBCTF RE wp
1.anniu
吐槽:浓浓一股杂项的味道,妈的,用xspy和resource har加ida死活搜不到回调函数,淦
下一个灰色按钮克星,直接把灰色的按钮点亮,直接点击就可以出了,软件下载链接:http://xiazai.zol.com.cn/detail/15/147895.shtml
2. Matara Okina
这题直接反编译进去,习惯性的看manifest文件,看下主活动在哪
好家伙,果然里面藏东西呢,有些很概念,开发没用到,这里涉及到了launchMode,这个是活动的启动模式,链接如下:
https://blog.csdn.net/sinat_14849739/article/details/78072401
大概是这样的,这种2对应的singTop模式,栈顶复用,也就是意味着,当flagactivity要再次跳转到flagactivity时,很可能并不会生成新的实例,而是
仅仅更改下内容,有点ajax的味道,具体看博客吧,说的比我详细多了2333,然后就是下面的intent-filter标签,这个schem标签其实就是Android可以通过
输入自定义的url启动activity,学习链接: https://juejin.cn/post/6844903506822840328#heading-1
接着看下源码:
发现好家伙,发现真正的问题是secret这个参数所对应的内容是需要逆向出来的,python直接一把梭,跑出来
res="@lgvjocWzihodmXov[EWO"
print(len(res))
flag1=""
flag2=""
for i in range(int((len(res)+1)/2)):
flag1+=chr((ord(res[i])^(i+1))&0xff)
flag2+=chr((ord(res[len(res)-i-1])^(i+1))&0xff)
print(flag1)
print(flag2[::-1])
print(flag1+flag2[::-1])
注意中间的cc是错误的,因为源码中,中间因为两次异或相同的数字,所以是没变的,其实cc是h字母,拼接上去就好了
剩下就是调用这个url,跳转到这个activity,flag就出来了,这里就不多叙述了。
3.e
这题比较简单,动调就出来了,算是我最早写出来的题了。
4.A maze in
这里y4师傅深搜的思路是真的强,发现自己的算法好垃圾啊,放下表哥的exp,膜
import sys sys.setrecursionlimit(100000)
mkey = [
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,
0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00,
0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,
0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,
0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,
0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
0x01, 0x00, 0x01, 0x00
]
road = []
flag = 0 def smaze(row, col, n):
global flag
global road
if row == 7 and col == 4:
flag = 1
if flag == 1:
if len(road)==34:
print("".join(road))
return 1
if mkey[32 * row + col * 4 + 0] == 1 and n != 'D':
if row > 0:
road.append('U')
smaze(row - 1, col, 'U')
if mkey[32 * row + col * 4 + 1] == 1 and n != 'U':
if row < 7:
road.append('D')
smaze(row + 1, col, 'D')
if mkey[32 * row + col * 4 + 2] == 1 and n != 'R':
if col > 0:
road.append('L')
smaze(row, col-1, 'L')
if mkey[32 * row + col * 4 + 3] == 1 and n != 'L':
if col < 7:
road.append('R')
smaze(row, col+1, 'R')
if len(road) != 0:
road.pop() def go():
ans = "@lgvjocWzihodmXov[EWO"
se = [0] * len(ans)
for i in range((len(ans) + 1) // 2):
k = i + 1
j = len(ans) - 1 - i
se[j] = ord(ans[j]) ^ k
se[i] = ord(ans[i]) ^ k ff = [chr(i) for i in se]
print(ff)
print(''.join(ff))
if __name__ == '__main__':
smaze(0,3,'0')
go()
最新文章
- Mongodb学习笔记四(Mongodb聚合函数)
- Unity3D热更新全书FAQ
- kali开启ssh
- sql server 数据库备份,完整备份,差异备份,自动备份说明
- C# 如何判断数据是否为 NaN
- Oracle 数据的导入和导出(SID service.msc)
- [置顶] 最优间隔分类器、原始/对偶问题、SVM的对偶问题——斯坦福ML公开课笔记7
- 洞穴勘测(bzoj 2049)
- BFC详解
- 多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象
- Java:类类型变量
- ABP .Net Core 部署到IIS 问题汇总
- Python类的定义
- css,解决文字与图片对齐的问题
- Python学习总结(一)—— 十分钟入门
- Unity3D RTS游戏中帧同步实现
- 怎样解题 (G. 波利亚 著)
- 微信小程序开发踩坑日记
- VirtualBox 安装 Gentoo 小记
- Spark运行模式概述