まず、360 Strong Nations Cup のプラットフォームと、質問を考えてくれた大物たちに感謝したいと思います。
目次
皆さん乾杯( •̀ ω •́ )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)
走る
フラグを取得
無料のスクリプトのために、注意してください。
添付ファイルをダウンロード