首页 > 其他分享 >ISC2016训练赛-phrackCTF-Smali

ISC2016训练赛-phrackCTF-Smali

时间:2024-03-28 18:11:19浏览次数:29  
标签:AES String str2 解码 base64 phrackCTF 训练赛 import Smali

ISC2016训练赛-phrackCTF

Smali:

类型:Reverse

**题目描述:都说学好Smali是学习Android逆向的基础,现在刚好有一个smali文件,大家一起分析一下吧~~ **

解题方法:将题目附件下载下来之后发现是一个.smali文件,将它放进jadx-gui里面进行一下反编译得到:

package net.bluelotus.tomorrow.easyandroid;

import android.util.Base64;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

/* loaded from: C:\Users\76649\AppData\Local\Temp\jadx-3466106792537216802.dex */
public class Crackme {
    private String str2 = "cGhyYWNrICBjdGYgMjAxNg==";

    public Crackme() {
        GetFlag("sSNnx1UKbYrA1+MOrdtDTA==");
    }

    private String GetFlag(String str) {
        byte[] content = Base64.decode(str.getBytes(), 0);//这里将getflag里的值进行base64解密
        String kk = new String(Base64.decode(this.str2.getBytes(), 0));//这里将str2里面的值进行base64解码
        System.out.println(decrypt(content, kk));
        return null;
    }

    private String decrypt(byte[] content, String password) {  //将解码后的Getflag和str2传下来
        try {
            byte[] keyStr = password.getBytes();
            SecretKeySpec key = new SecretKeySpec(keyStr, "AES"); //将解码后的str2作为AES的密钥
            Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");//进行AES编码解码
            cipher.init(2, key);
            byte[] result = cipher.doFinal(content); //将解码后的Getflag作为AES的密文
            String m = new String(result);
            return m;
        } catch (InvalidKeyException | NoSuchAlgorithmException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException e) {
            e.printStackTrace();
            return null;
        }
    }
}

简单分析完这段代码之后,我们发现str2进行base64解码可以得到一串字符串,然后Getflag里面的值经过base64解码得到的是一串乱码,所以这里就比较符合上面分析出来的,str2可能是AES的密钥,Getflag是AES的密文

所以这里我们可以用python脚本来进行解码:

from Crypto.Cipher import AES
import base64

key = base64.b64decode("cGhyYWNrICBjdGYgMjAxNg==")
str1 = base64.b64decode("sSNnx1UKbYrA1+MOrdtDTA==")
print(str1)
cryptor = AES.new(key, AES.MODE_ECB)
print(key)
result = cryptor.decrypt(str1)
print(result)

解码得到flag:

PCTF{Sm4liRiver}

标签:AES,String,str2,解码,base64,phrackCTF,训练赛,import,Smali
From: https://www.cnblogs.com/xyweiwen/p/18102323

相关文章

  • ISC2016训练赛-phrackCTF-FindKey
    ISC2016训练赛——phrackCTFReverse-FindKey:题目描述:FLAG就是你输入的key解题方法:将题目附件下载下来是一个无后缀名的文件,把他放进exeinfope.exe里查看一下它的信息这里我们看到它不是一个EXE文件,但是下面有提示说是用python,然后我们将他的后缀名改成.py文件,用python打开是......
  • SUM-ACM——VJ天梯训练赛
    这次比赛我暴露了很多问题,一些模拟还有贪心思路错误。补题如下:E-E题解:一道模拟题,我的问题在于不知道怎么替换下一个,就从0开始遍历数组然后数组的值--,如果为零就continue下一个,这个问题在于无法遍历完所有的数,会少算。其实只需要把接完水的按顺序到下一个就可以了,这样还有一个......
  • 牛客寒假训练赛第二场
    基本情况前面过的很顺,F吃满罚时,T4次WA4次最后乱搞过的,K有一点思路,但是码力跟不上,其他没做的题题目基本没思路。EFhttps://ac.nowcoder.com/acm/contest/67742/Ehttps://ac.nowcoder.com/acm/contest/67742/F两题虽然都是过了,但一个是提交前改了很久,一个是提交改了很久。E......
  • 20240204训练赛随记
    圆的覆盖通过STL删除被覆盖的点红警【时间】【攻击力】--->【伤害】时间是单调的--->二分时间middp[i]表示攻击力为i的最大伤害dp[i]dp[i+s[j].v]+s[j].v*(x-s[j].t)毕加猪Bellman-Ford求最短路llcalc(lls,llt){memset(dis,0x3f3f3f3f,sizeof(dis)......
  • 牛客寒假训练赛第一场
    基本状况赛时开了五题,B题大分讨卡住了,其他题目就看了题面。有几个基本状况:贪心题没有深入思考,就无脑二分入手,倒是大量罚时。分讨思路不清楚。E题很搞,名字叫贪心题但是纯爆搜,爽切。Ahttps://ac.nowcoder.com/acm/contest/67741/A虽然签到题,但是学习一下jly写法。我......
  • 20240202-训练赛随记
    机场检录//二分#include<bits/stdc++.h>usingnamespacestd;longlongn,m,a[100005];boolcheck(longlongx){longlongt=0;for(inti=1;i<=n;i++)t+=(x/a[i]);returnt>=m;}intmain(){cin>>n>>m;for(inti=1;i<......
  • 2024寒假集训 进阶训练赛 (六)部分题解
    A统计单词数题解注意是否是单词。CODECPP#include<iostream>#include<string>#include<algorithm>usingnamespacestd;intmain(){stringword,article;getline(cin,word);getline(cin,article);//转换为小写字母transform(word.beg......
  • 20231027NOIP训练赛
    20231027NOIP训练赛时间安排7:40-9:20写T19:20-10:20写T210:20-11:10写T3T411:10-11:50写T5总结T1写挂了,T3的set超时了题解T1简单DP题T2把加转化为差分,差分数组进行区间加操作,用线段树维护T3用一个栈维护一下没有被匹配的字符即可T4结论题,答案要么删掉一个点,要......
  • 20231019NOIP训练赛
    20231019NOIP训练赛时间安排7:50-8:50写T18:50-9:30写T29:30-10:30写T3T410:30-11:50写T1总结T2没花时间想,没想到建图题解T1枚举最大公约数,然后统计最大公约数的倍数T2并查集,设u=\(X_{b_i}\),v=\(X_{a_i}\),在u和v间建一条长度为\(c_i\)的边,可以用并查集维护,如果u和v已......
  • 20231018NOIP训练赛
    20231018NOIP训练赛时间安排7:50-8:10写T19:10-10:30写T210:30-11:50写T4总结没看T3去做了T4,考完试发现T3比T4更可做。题解T1贪心题,排序之后贪心即可T2对a做前缀和,把题目的式子化成\[\sum_{l=1}^{n}\sum_{r=l}^n\sum_{i=l}^{r}b[i]*(sum[r]-sum[l])\]对于每一个......