zoukankan      html  css  js  c++  java
  • 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() 
  • 相关阅读:
    微信菜单设置为小程序报错85005错误
    VS2013常用快捷键
    VS2017专业版和企业版激活密钥
    微信小程序image组件binderror使用例子(对应html、js中的onerror)
    本科无学位有哪些途径来获得硕士学位
    asp.net 微信JsSDK
    使用nginx反向代理,一个80端口下,配置多个微信项目
    对称与非对称加密;SSL;HTTPS;AJP
    java 在实例化异常的时候做的事情
    简单理解正向,反向,透明代理
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14328140.html
Copyright © 2011-2022 走看看