2022年「パワフルネイションズカップ」予選wp(台本あり、工程詳細)

まず、360 Strong Nations Cup のプラットフォームと、質問を考えてくれた大物たちに感謝したいと思います。

目次

タイトル: Welcome_to_QGB

題名:ビッグボスビッグボス

タイトル: ザ・フン・ピクチャー

タイトル: GIF を探す

タイトル: B@tCh

タイトル: babyRSA

 皆さん乾杯( •̀ ω •́ )y またのお越しをお待ちしております


  • タイトル: Welcome_to_QGB

 

 base64 に指示してフラグを取得する


  • 題名:ビッグボスビッグボス

添付ファイルをダウンロードして画像を取得する

このトピックは、lsb ステガノグラフィーを使用して画像を取得できることを示唆していますが、ほとんどの人は stegsolve の使用方法を知りません。

これはより直接的な方法です

カーリーを入れる

zsteg で情報を探す

中の写真を発見

写真を提案する

zsteg -e b1,rgb,lsb,xy 1.png>99.png

画像を抽出する

 

写真には、非常にステガノグラフィーである可能性があるという考えを導くための矢印があります

010までドラッグ

高さを変える

フラグを取得

フラグを取得


  • タイトル: ザ・フン・ピクチャー

 添付ファイルをダウンロードすると、パスワードが必要であることがわかりました

プロンプトがないことに気付いたとき

爆破しようとするだけ

4桁の解凍パスワードを取得する

7u3N

圧縮パッケージを開く

テキストを開く

 

txtにはプロンプトがあるので、フラグを直接010に入れるだけです

txtはそれが写真であり、010コードによると言っています

pngのファイルヘッダーを追加します

QRコードの取得に成功

しかし、スキャンにより、フラグがここにないことがわかりました

 紛らわしい情報かもしれませんので、

もう1つのファイル

010マイルを開いてドラッグできません

圧縮パッケージ形式であることが判明

接尾辞を直接変更する

開いた後、サフィックスのないファイルがまだあります

 

txtのヒントを考える

ファイルヘッダーを思い切って変更する

 

 QRコードを取得する

 

 トランスコードしてフラグを取得する


  • タイトル: GIF を探す

 添付ファイルのダウンロード

圧縮パッケージには解凍パスワードが必要であることがわかりました

無駄に再試行しました  

010までドラッグ

圧縮パッケージが偽のパスワードであることが判明

winソフト付属の修復ツールで修復後解凍

得る

 aaa ドラッグ 010

png形式で見つかりました

 画像に接尾辞を追加する

 010 マイルを直接ドラッグして高さを変更します

 

写真を回転させてbbb.zipの解凍パスワードを取得

サフィックスなしの bbb ファイルを取得する

 

 最初は、GIF アニメーションの分析に夢中でした (後に非常に役立つことがわかりました)。

bbb と ccc.gif ファイル形式の比較

類似点を見つける

したがって、bbb が gif ファイルであると疑われる理由があります。

そこで思い切って bbb の文字化けを ccc の先頭に置き換える

 

 gifファイルとして保存します

別の gif ファイルを取得する

ぼんやりと中で旗が点滅しているのを見つけました。

フレーム数を言及するためにstegsolveに入れてください

8番目のフレームには確かに何かがあります

 保存後、stegsolve を直接使用する

グレーディングビットをオンにして、最も明確なものを見つけます

 フラグを取得


  • タイトル: B@tCh

 解凍してbatファイルを取得します

 

 それが何であるかわからない 

010 を使用して最初に開きます

文字化けした

六角をクリック

マルチパーティのリソースを検索したところ、暗号化方式がバッチ暗号化であることがわかりました.py を使用して復号化用のスクリプトを記述します.その前に、暗号化方式を一致させるためにバットでいくつかの処理を行う必要があります.010editor を使用して、 bat を実行し、16 進数モードに切り替えて、次のフィールドをプログラム ヘッダーに追加します。

::BatchEncryption ビルド 201610 作成者: [email protected]

 

txtファイルとして保存

この時点で、スクリプトを修正する必要があります。

スクリプトを添付します(無料です)

#!/usr/bin/python
# -*- coding:utf-8 -*-
#
# Batch Decryption 202009 (BatchEncryption Build 201610)
#

import os
import sys

encrypt_file = ''
encodeErrByteArray = [b'\xfe', b'\xff']

def decryption(data):
    # 去除头部后的源代码下标开始位置
    i = data.index(b'163.com\r\n') + 9
    vars = {}
    length = len(data)
    source = ''
    while i < length:
        Data = run(vars, data, i)
        i = Data.get('index')
        source += Data.get('buf')
    return source

def run(vars, data, i):
    buf = ''
    f = 0
    t = 0
    x = False
    l = len(data)
    while(True):
        if data[i] == 0x0d and data[i+1] == 0x0a:
            i += 2
            break
        # get %var:~x,y% %0
        if data[i] == 0x25:
            if not x:
                x = True
                f = i
            else:
                x = False
                t = i
                rst = var_percent(data[f:t+1], vars)
                buf += rst
            i += 1
        else:
            if not x:
                try:
                    buf += str(data[i:i+1], encoding="utf-8")
                    i += 1
                except Exception as err:
                    # 过滤掉无法解析的字节
                    if data[i:i+1] in encodeErrByteArray:
                        buf = ''
                        i += 1
                    else:
                        # 以ansi码解析中文
                        chinese = b''
                        temp = i
                        while (str(data[temp:temp+1]).find('x') >= 0):
                            chinese += data[temp:temp+1]
                            temp += 1
                        buf += chinese.decode('ansi', 'ignore')
                        i = temp
            else:
                if (f + 1 == i) and ((data[i] >= 0x30 and data[i] <= 0x39) or data[i] == 0x2a):
                    x = False
                    t = i
                    rst = str(data[f:t+1], encoding="utf-8")
                    buf += rst
                i += 1
        if i >= l:
            break
    #print(buf)
    bufs = buf.split('&@')
    for var in bufs:
        if var[0:4] == 'set ':
            var = var[4:]
            b = var.find('=')
            vars[var[0:b]] = var[b+1:].replace('^^^', '^')
    buf += '\r\n'
    return {'index':i, 'buf':buf}

"""
%':~-53,1%
':~-53,1
["'", '-53,1']
"""
def var_percent(data, vars):
    full = str(data, encoding="utf-8")
    buf = full[1:len(full)-1]
    buf = buf.split(':~')
    var = buf[0]
    if not var in vars:
        vars[var] = os.getenv(var)
    ent = vars[var]
    if (len(buf) > 1):
        l = len(ent)
        buf = buf[1].split(',')
        f = int(buf[0])
        t = int(buf[1])
        if f < 0:
            f, t = l + f, t
        rst = ent[f: f+t]
    else:
        rst = full
    return rst

def makeFile(path,content):
    try:
        encryptionFilePath = os.path.dirname(sys.argv[1])
        encryptionFileName = os.path.basename(sys.argv[1])
        encryptionFile = encryptionFileName.split('.')
        decryptionFileName = encryptionFile[0] + '_denctyption.' + encryptionFile[1]
        decryptionFile = encryptionFilePath + '/' + decryptionFileName
        print(decryptionFile)
        file = open(decryptionFile, 'w+')
        file.write(content)
        file.close()
    except Exception as err:
        print(err)
        exit        

if __name__ == '__main__':

    try:
        if len(sys.argv) < 2:
            print('param len error\nuse: python dencrypt.py encrypt.bat')
            exit
        encrypt_file = sys.argv[1]
        file = open(encrypt_file, "rb")
        data = file.read()
        file.close()
        source = decryption(data)
        makeFile(encrypt_file, source)
    except Exception as err:
        print(err)
        exit

cmd コマンド ラインで入力します。

D:\py> python 2.py 2.txt

 

フラグを取得 


  • タイトル: babyRSA

添付ファイルをダウンロードして入手

標準の RSA デコード

RSA ステガノグラフィーの概要

スクリプトについて (あ、無料です)

from Crypto.Util.number import long_to_bytes
import gmpy2
p =gmpy2.mpz(138426212841397149251588296134109165537899310438173750798364671675288360000561798355248532054510396589533971267028332214842673811687883616744131130398289077554612883492204032984950562003356001139508926059499376562553551028636226548350263501563647121411422314575340826478224596800551927493501012088298680613879)
q =gmpy2.mpz(143049585916449723925099288769361999764006236021072588846981723369760726410300239985500007665844216512624584735358913225102358935263419564762626442560266419262555820476424949328464294635696200999314599615276252945343396324462380831303649657541178450608628341694003116451196859197001909770503494349726784153027)
e =gmpy2.mpz(33)
phi_n= (p - 1) * (q - 1)
d = gmpy2.invert(e, phi_n)
n=q*p
print("d is:")
print (d)
print("n")
print(n)
c=eval('8289193595993122921665841895022976104081072031742625708463764526627277052318279883859957490142516216024577600646435489409922900157398525709897066174566802837502462355349783465478982642622084973551364981880045419080599645199823932885880822500635358984691098019833373137233421653021398144494548012693727095816659975325054446041806452350925160187980103112171629784199440456927010178848494443466141894033183475723365090593126309457761806861074583084445735295863195227044710706725657905516027928685083079534461311107335936896525014768633605005601716003989306032040278750752221002412831419560140443505534384151408234420458')
m = pow(c, d, n)

print(m)
string = long_to_bytes(m)
print(string)

 走る

 フラグを取得

無料のスクリプトのために、注意してください。

添付ファイルをダウンロード

2022 年「パワフル カントリー カップ」テクニカル スキル コンペティション - 別紙2022 「パワフル カントリー カップ」テクニカル スキル コンペティション より多くのダウンロード リソースと学習教材については、CSDN ダウンロード チャネルをご覧ください。

 皆さん乾杯( •̀ ω •́ )y またのお越しをお待ちしております

おすすめ

転載: blog.csdn.net/m0_68012373/article/details/125841806