2020 DJBCTF RE wp

摘要:
4.亚马逊的Y4大师有一个非常强烈的深入搜索的想法。他发现他的算法是垃圾。记下他表哥的exp,膜进口sysys。设置递归限制key=[0x00,0x01,0x00,0x0,0x01,1,0x011,0x01,0,0x0,1,0x00,1,0x00,0x001,0x01,1,0x01,1,1,0x01,0x01,0,0x011,0,0x0,1,0x0,1,0x01,0x01,x01,0x00,0x010x0 0,0x01,0x00,0x0,0x0,1,0x01,1,0x00,1,0x00,0x01,0x01,1,0x0,1,1,0x001,0x01,0x01,0,1,0,1,1,1,0,0x001,1,0x02,0x011,0x01,0,0x0,0,1,0x00,0x01,0x00,x01,0x01.0x00,0x01,0x01,0x00,0x0,0x00,1,0x01,1,0x0,1,0x001,0x00,0x011,0x01,1,0x01,0,0x01,1,0x011,0,0x0,1,0,0x01,0x00,0x01,10x00,0x01,0x00,0x01,0x01,10x00,x01,x00,0x00,10x00,1x00,x00,10x0,0x00]road=[]flag=0defsmaze:globalflaggloballoadifrow==7andcol==4:flag=1ifflag==1:iflen==34:printreturn1ifmkey[32*row+col*4+0]==1andn!

1.anniu

吐槽:浓浓一股杂项的味道,妈的,用xspy和resource har加ida死活搜不到回调函数,淦

下一个灰色按钮克星,直接把灰色的按钮点亮,直接点击就可以出了,软件下载链接:http://xiazai.zol.com.cn/detail/15/147895.shtml

2020 DJBCTF RE wp第1张

2.Matara Okina

这题直接反编译进去,习惯性的看manifest文件,看下主活动在哪

2020 DJBCTF RE wp第2张

好家伙,果然里面藏东西呢,有些很概念,开发没用到,这里涉及到了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

接着看下源码:

2020 DJBCTF RE wp第3张

2020 DJBCTF RE wp第4张

发现好家伙,发现真正的问题是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])

2020 DJBCTF RE wp第5张

注意中间的cc是错误的,因为源码中,中间因为两次异或相同的数字,所以是没变的,其实cc是h字母,拼接上去就好了

剩下就是调用这个url,跳转到这个activity,flag就出来了,这里就不多叙述了。

3.e

这题比较简单,动调就出来了,算是我最早写出来的题了。

4.A maze in

2020 DJBCTF RE wp第6张

这里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):
    globalflag
    globalroad
    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 + 1j = len(ans) - 1 -i
            se[j] = ord(ans[j]) ^k
            se[i] = ord(ans[i]) ^k

        ff = [chr(i) for i inse]
        print(ff)
        print(''.join(ff))
if __name__ == '__main__':
    smaze(0,3,'0')
    go() 

免责声明:文章转载自《2020 DJBCTF RE wp》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇logic:iterate 遍历教你摸清 Linux PC 的性能底细?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JQuery实现表格的相同单元格合并的三种方法

表格中相同单元格合并是经常需要用到的,针对自己做的方法做个小总结,先看一下合并前效果图, 合并后的效果图: 代码: <!DOCTYPE html><html>  <head>    <title>merge.html</title>     <meta http-equiv="keyword...

mysql日期 武胜

CURDATE() 返回当前日期如1970-01-01 CURTIME() 返回当前时间如00:00:00 NOW() 返回当前日期时间如1970-01-01 00:00:00 DATE(合法日期时间) 获取日期如1970-01-01 EXTRACT(单位 FROM 合法日期时间) 将日期转为指定单位 select EXTRACT(YEAR FROM `...

[Android]自己动手做个拼图游戏

目标 在做这个游戏之前,我们先定一些小目标列出来,一个一个的解决,这样,一个小游戏就不知不觉的完成啦。我们的目标如下: 游戏全屏,将图片拉伸成屏幕大小,并将其切成若干块。 将拼图块随机打乱,并保证其能有解。 在屏幕上留出一个空白块,当点空白块旁边的块,将这块移动到空白块。 判断是否已经拼好。 实现目标 1.将图片拉伸成屏幕大小,并将其切成若干块。 想...

python合并表

1 import xlrd, xlwt 2 3 # 读取 4 rbook = xlrd.open_workbook('提取+病例合并.xlsx') # 打开文件 5 print("表1:") 6 sheet = rbook.sheet_by_index(0) # 打开对应的表 7 nrow = sheet.nrows...

前端 vue表格数据导出Excel 文件实现

实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据;生成下载链接; 创建一个a标签,设置href和download属性 触发a标签的点击事件实现下载 实现如下: 表格为 <Table :columns="columns" :data="listdata"></Ta...

leetcode 36 有效的数独 哈希表 unordered_set unordersd_map 保存状态 leetcode 37 解数独

leetcode 36 感觉就是遍历。 保存好状态,就是各行各列还有各分区divide的情况 用数组做。 空间小时间大 class Solution { public: bool isValidSudoku(vector<vector<char>>& board) { int row[9][9]={...