吾愛破解 - LCG - LSG |安卓破解|病毒分析|破解軟件|www.pyclye.live

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 1899|回復: 7
上一主題 下一主題

[Android CTF] 攻防世界題解4-easy-apk

[復制鏈接]
跳轉到指定樓層
樓主
丶諾熙 發表于 2020-1-12 14:51 回帖獎勵

easy-apk

附件地址:https://adworld.xctf.org.cn/media/task/attachments/5eba4595b15a4afb8567c037ff5a6a88.apk

 這個題目還是比較簡單的,感覺是做的前四道里面最簡單的。也側面說明確實這個順序和難度關系不太對。

解壓后可以發現不存在lib文件夾,也就是說我們只分析java代碼即可。

首先,老規矩,看一下我們的MainActivity。
可以發現,很簡單的邏輯。

將我們輸入的字符串,加密后與已知字符串做比較。
此時,可以大膽猜測5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs=是段base64。(畢竟代碼中寫的很清楚。)

嘗試解密,發現失敗。

然后進而去分析他這個base64New.

可以發現,他對base64碼表進行了修改。

此時我們拿出第一關中的用的那個base變種腳本,替換我們的碼表即可。
最終get flag


"""
base64實現
"""

import base64
import string

# base 字符集

# base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
base64_charset = "vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89+/"

def encode(origin_bytes):
    """
    將bytes類型編碼為base64
    :param origin_bytes:需要編碼的bytes
    :return:base64字符串
    """

    # 將每一位bytes轉換為二進制字符串
    base64_bytes = ['{:0>8}'.format(str(bin(b)).replace('0b', '')) for b in origin_bytes]

    resp = ''
    nums = len(base64_bytes) // 3
    remain = len(base64_bytes) % 3

    integral_part = base64_bytes[0:3 * nums]
    while integral_part:
        # 取三個字節,以每6比特,轉換為4個整數
        tmp_unit = ''.join(integral_part[0:3])
        tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
        # 取對應base64字符
        resp += ''.join([base64_charset for i in tmp_unit])
        integral_part = integral_part[3:]

    if remain:
        # 補齊三個字節,每個字節補充 0000 0000
        remain_part = ''.join(base64_bytes[3 * nums:]) + (3 - remain) * '0' * 8
        # 取三個字節,以每6比特,轉換為4個整數
        # 剩余1字節可構造2個base64字符,補充==;剩余2字節可構造3個base64字符,補充=
        tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
        resp += ''.join([base64_charset for i in tmp_unit]) + (3 - remain) * '='

    return resp

def decode(base64_str):
    """
    解碼base64字符串
    :param base64_str:base64字符串
    :return:解碼后的bytearray;若入參不是合法base64字符串,返回空bytearray
    """
    if not valid_base64_str(base64_str):
        return bytearray()

    # 對每一個base64字符取下標索引,并轉換為6為二進制字符串
    base64_bytes = ['{:0>6}'.format(str(bin(base64_charset.index(s))).replace('0b', '')) for s in base64_str if
                    s != '=']
    resp = bytearray()
    nums = len(base64_bytes) // 4
    remain = len(base64_bytes) % 4
    integral_part = base64_bytes[0:4 * nums]

    while integral_part:
        # 取4個6位base64字符,作為3個字節
        tmp_unit = ''.join(integral_part[0:4])
        tmp_unit = [int(tmp_unit[x: x + 8], 2) for x in [0, 8, 16]]
        for i in tmp_unit:
            resp.append(i)
        integral_part = integral_part[4:]

    if remain:
        remain_part = ''.join(base64_bytes[nums * 4:])
        tmp_unit = [int(remain_part[i * 8:(i + 1) * 8], 2) for i in range(remain - 1)]
        for i in tmp_unit:
            resp.append(i)

    return resp

def valid_base64_str(b_str):
    """
    驗證是否為合法base64字符串
    :param b_str: 待驗證的base64字符串
    :return:是否合法
    """
    if len(b_str) % 4:
        return False

    for m in b_str:
        if m != "=" and m not in base64_charset:
            return False
    return True

if __name__ == '__main__':

    local_base64 = "5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs="
    print('使用本地base64解密:', decode(local_base64).decode())

免費評分

參與人數 9吾愛幣 +17 熱心值 +8 收起 理由
cg1937 + 1 + 1 我很贊同!
ma4907758 + 1 熱心回復!
sunnylds7 + 1 + 1 熱心回復!
qtfreet00 + 12 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
hexiaomo + 1 + 1 用心討論,共獲提升!
七個漲停一倍 + 1 用心討論,共獲提升!
smile5 + 1 熱心回復!
Nachtmusik + 1 用心討論,共獲提升!
陳世界 + 1 + 1 我很贊同!

查看全部評分

發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

沙發
dn163 發表于 2020-1-12 20:22
沒人頂???我頂了!
3#
abuiamei 發表于 2020-1-12 21:16
4#
xs8888dm 發表于 2020-1-13 08:15
5#
lhl0235 發表于 2020-1-13 10:11
這個挺不錯?梢栽囅
6#
z5487693 發表于 2020-1-13 16:13
發點動態注冊so函數的吧
7#
sunnylds7 發表于 2020-1-13 20:16
感謝分享
8#
 樓主| 丶諾熙 發表于 2020-3-17 13:29 <
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

GMT+8, 2020-4-1 15:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表
腾讯二分彩骗局