0x00はじめに
この記事は、「2024年のカレッジネットワークセキュリティ管理操作およびメンテナンス競争」の詳細なソリューションです。これは、主にWeb、PWN、RE、その他、アルゴリズムなどの多方向質問の問題解決プロセスをターゲットにしています。
0x01 Misc
サインイン
GIFを与え、オンラインで直接フレーム化します
synt {fvtava-dhvm-jryy-qbar}を取得し、Caesarを見て、rot13で直接デコードします
flag {signin-quiz-well-done}
Phing Emailの認識
電子メールソフトウェアを使用して表示するか、直接表示できるEML電子メールファイルを提供しました(面倒かもしれません)
フラグ1
直接base64フラグを取得するためのデコード{welcometo}
フラグ2
次のコンテンツは、base64によってエンコードされた情報です
デコード後、それをチェックしてフラグを取得します{phishhunting}
フラグ3
EMMLファイルの残りのコンテンツにはフラグがないため、送信者のドメイン名からのみ開始できます。
DNS分析を確認してください、ここに360脅威インテリジェンスセンターがあります
https://ti.360.net/domain/foobar-edu-cn.com
(このインテリジェンスセンターは、競争プロセスの分析履歴を記録するため、サブドメイン情報を見るだけでフラグを取得できます)
クエリプロセスはまだ正常です
サードパーティのサービスプラットフォームに加えて、ドメイン名のTXTレコードを表示するためにWindowsに付属するNSLookupを使用することもできます。
nslookup -qt=txt foobar-edu-cn.com
プロンプトによると、ドメイン名の下にサブドメイン名の分析レコードを見つけ、3つの方法で完全なフラグをスプライスする必要があります
ドメイン名は海外で適用されるため、多くの国内のウェブサイトを解析できないため、外国のウェブサイトを使用してゆっくりと試すことができます
https://www.virustotal.com/gui/domain/spf.foobar-edu-cn.com/detailsspf
https://dnsspy.io/scan/foobar-edu-cn.comdefault._domainkey
https://www.misk.com/tools/#dns/_dmarc.foobar-edu-cn.com_dmarc
3つの部分を個別に取得し、フラグを取得するためにそれらをスプライシングします
flag_part1={n0wy0u
flag_part2=_kn0wh0wt0_
flag_part3=analys1sdns}
flag {n0wy0u_kn0wh0wt0_analys1sdns}
実際、これらの3つのサブドメインは、それぞれ対応するサービスを提供するSPF、DKIM、DMARCなど、電子メールサーバーに対応するいくつかのプロトコルです。
https://help.aliyun.com/document_detail/2685946.html
easyshell
PCAPトラフィックパッケージを提供すると、horseが送信された後に実行する必要があるshell.phpのリクエストを郵送に直接確認できます。
HTTPストリームをフィルタリングし、上記の推測を確認してください
HTTPストリームを追跡すると、投稿のコンテンツが暗号化されます。 Ice Scorpion 4.0の質問と交通特性を組み合わせて、これはIce Scorpion Horseであると推測されます。
アイスサソリフロー特性:
Accept: Application/JSON、Text/JavaScript、 */*; Q=0.01Content-Type: Application/x-www-form-urlencodedConnection: Keep-Alive…
Ice Scorpion 4.0はAES暗号化を使用し、デフォルトキーはE45E329FEB5D925Bです。つまり、MD5の最初の16ビット( 'Rebeyond')です。
Ice Scorpion 3.0、デフォルトのパスワードは次のとおりです。E45E329FEB5D925B、あなたはそれをチェックすることができます:backing_decrypt/decropt.Php
最後の応答パッケージからデコードしてみてください
ここでは、CyberのAES-CBCモードIVが空になることはできないが、オフセットする必要はないので、0に入力する必要があることに注意する必要があります。
コンテンツのあるものを見つけます
リクエストパッケージがリクエストしているものをご覧ください。ここで、デコードされた結果を置くと、Secret2.txtファイルを読んでいることがわかります
Secret2.txt
こんにちは、しかしあなたが探しているものは私ではありません。
次に、以前の応答パッケージでキーコンテンツを見つけます
ZIP圧縮パッケージで、直接保存します
zipを確認してください。Secret1.txtとSecret2.txtがあり、パスワードが必要です。
既知のsecret2.txtのコンテンツを組み合わせて、既知のプレーンテキストを介して攻撃することができます
最初にsecret2.txtを書き、それをzipとして保存して、元の暗号化アルゴリズムと同じであることを確認してください
プレーンテキスト攻撃を開始します。ここに小さなトリックがあります。取得するパスワードが表示されたら停止します。 [ポップアップ]ウィンドウをクリックして、解凍します。
Get Flag {70854278-EA0C-462E-BC18-468C7A04A505}
secretdb
タイトルはSQLite DBファイルを提供し、遅すぎるだけで、あなたのためのフラグは開かれていません。
削除された情報を復元する必要があります。直接復元されるツールはありません。復元できないか、文字化けしています。手動で抽出してみてください。
参照:https://www.cnblogs.com/jiangcsu/p/6569045.html
焦点は、ユニット内の構造にあります
010editorはsecret.dbを開き、それをフラグに見つけて表示します。赤いボックスの下の部分は、以前に削除されたデータです。
上記のデータベースフラグテーブルの構造から、列がID、ソート、メッセージであることがわかります。ソートは、ソートに使用されるインデックスです。メッセージは表示されている文字を保存するため、上記の図の可視文字、つまりメッセージ、および以前の数字がソートであることを単純に観察できます。たとえば、可視文字9の16進数は39であり、以前の数字は0Eであるため、インデックス0Eの値は9です。
したがって、残りの値を抽出します
0x17-
0x0 f
0xe 9
0x1b 7
0x10 3
0xa b
0x19 2
0x14 b
0xf 2
0x12-
0x23 4
0x16 6
0x1f a
0x25 8
0x2a
0x1e
0x5 f
0x3 g
0x11 c
0xc 0
0x4 {
0x22a
0x21 b
0x7 2
0x1d f
0x26 f
0x1c-
0x9 1
0x27 0
0xd-
0xb
0x8 9
0x1 l
0x13 4
0x29}
0x15 a
0x28 b
0x6 6
0x1a d
0x24 e
0x20 b
スクリプトを書き、それをソートし、フラグを出力します
f:としてopen( '1.txt'、 'r')
data=f.readlines()
out=['' for iの範囲(43)]
data:のiの場合
index、val=i.replace( '\ n'、 '').split( '')
index=int(index、16)
out [index]=val
flag=''
インデックス=0
out:のiの場合
print(hex(index)、i)
インデックス +=1
フラグ +=i
印刷(フラグ)
#flag {f6291bf0-923c-4ba6- 2d7-ffabba4e8f0b}
1つが欠けていて、それを爆破して旗を取得します{f6291bf0-923c-4ba6-82d7-ffabba4e8f0b}
ゲートウェイ
ゲートウェイソースコードを与え、index.htmlには製品名HS8145Vがあります
クエリパスワード、cgi-bin/baseinfoset.jsonに一連のパスワードがあります
10611210110712710110449575653565456495151105561031064956505610310256521011041041021055310153102129
CGI-BIN/BASEINFOSET.JSONを検索します
https://github.com/iheshime/chinatelecom-esurfing-gateway-hg260-admin-password-algorithm
ゲートウェイ管理者の一般的な暗号化アルゴリズムであり、スクリプトがわずかに変更されたことがわかりました。
exp.py:
def passwd_decode(code) - str:
passwd_list=map(int、code.split( ''))
結果=[]
passwd_list:のiの場合
97=i=100または65=i=68:の場合
I +=22
Elif I 57:
i - =4
result.append(chr(i))
#print(i、chr(i))
return( '' .join(result))
passwd=passwd_decode( '10611210110712710110449575653565456495151105561031064956505610310256521011041021055310153102129')
印刷(passwd)
#flag {AD1985868133E8CF1828CB84ADBE5A5B}またはcode='106112101107127101104957565356545649515110556103103106495650561031025652101101021055310153102129' [:-1] 'baseinfoset_telecompassword':'1147355110693753113'list=map(int、code.split(' '))result=[] for for i in list: i- 57: i-=4 result.append(ch)プリント( '' .join(result))#flag {ad1985868133e8cf1828cb84adbe5a5b}
zip
#include arpa/inet.h
#include sys/wait.h
#include stdbool.h
#include stdlib.h
#include string.h
#include unistd.h
#include stdio.h
#include pty.h
Char Token [1024]、buf [1024];
void load(){
file *f=fopen( 'token.txt'、 'r');
fgets(token、sizeof(token)、f);
トークン[64]=0; //たぶん64バイトで十分です
fclose(f);
}
int cmmpstr(char const *a、char const *b){
MEMCMPを返します(a、b、strlen(a));
}
void zip(char *password){
intマスター、pid;
pid=forkpty(master、null、null、null);
if(pid==0){
char* argv []={'7z'、 'a'、 'flag.zip'、 'tmp/flag.txt'、 '-mem=aes256'、 '-p'、null};
execve( '/usr/bin/7z'、argv、null);
} それ以外{
CHARバッファー[4097];
while(true){
ssize_t n=read(master、buffer、4096);
if(n 0)break;
ffflush(stdout);
書き込み(1、バッファ、n);
バッファー[n]=0;
Recommended Comments