ナビゲーターカップ部分Writeup

30750 ワード

コーディングデコード
V2VsY29tZXRvdGhlUGlsb3RDdXA=

問題に署名して、base 64は復号して得ます:
WelcometothePilotCup

証拠分析
pacpをあげました.pcap,CTF Wikiにはこの例題が収録されています...
Wiresharkが開くと、DNSプロトコルがすべて検出され、クエリ名は大量の文字列xxxxx.skullseclabs.orgです.
BSides San Francisco CTF 2017原題のようですが、この記事を参考にしてください.https://volatilevirus.home.blog/2018/12/30/bsidessf17-ctf-dnscap-write-up/
次のコマンドで抽出します.
tshark -r pacp.pcap -T fields -e dns.qry.name > hex

次にflagを以下のスクリプトで得る.png:
from scapy.all import *
 
r = rdpcap("pacp.pcap")
 
a = ""
 
b = ""
c = ""
new = ""
 
f = open("flag.png","w")
 
for i in range (0,len(r)):
    if r[i].haslayer(DNSQR) and not r[i].haslayer(DNSRR):
        a = r[i][DNSQR].qname
        b = a.replace(".skullseclabs.org.","")
        b = b.replace(".","").decode("hex")[9:]
 
        if b == c:
            continue
 
        c = b
 
        if 6 < i <365:
            new = new + b
 
f.write(new)
 
f.close()

直接開かないで、010 Editorで見てみます:领航杯部分Writeup_第1张图片上で選んだ部分を削除して、更に開いて、flag:b 91011 fc 领航杯部分Writeup_第2张图片を得ます
lsb
次の写真をあげました:领航杯部分Writeup_第3张图片
タイトル名lsbにより、Stegsolveで開き、下の位置にシフトしてflag:ONPGRABCICM 领航杯部分Writeup_第4张图片を得る
リカバリと復号化
公安员は犯罪者のコンピュータの中でいくつかのディスクのファイルを発见して、しかし肝心な情报がすでに削除されたことを発见して、今あなたがディスクに対して回复することを必要として、そして回复したいくつかの秘密のファイルの中の暗号化の情报に対して解読します.注意:stringsで取得したyc 4 pl 0 fvjs 2 k 1 t 7 Tは偽flagです.他の正しい問題方法でflagを取得してみてください.
ディスクリカバリという問題があり、偽のflagがあると判断できます.
添付ファイルはxtyです.img、kaliの下のコマンドでマウントします.
mount -o loop xty.img /mnt

在这里插入图片描述
隠しフォルダ.hideを送信します.中にはsecret.odgがあります.開くと、领航杯部分Writeup_第5张图片は何の役にも立たないようです.テーマの説明のディスクの復元を考えています.sstatとext 3 grepの2つのツールを使用する必要があります.まず、次のコマンドで関連情報を表示します.
fsstat xty.img

领航杯部分Writeup_第6张图片ここではRoot Directory: 2の2が使用されることに注意してください.
さらにext 3 grepツールを使用して、ディレクトリを次のように表示します.
ext3grep --inode 2 xty.img

领航杯部分Writeup_第7张图片は多くのsecretファイルを見ることができますが、実際には内容は同じで、次のコマンドで復元します.
ext3grep --restore-file secret xty.img

领航杯部分Writeup_第8张图片ファイルを開くと、次の文字列が表示されます.
aWdxNDs3NDFSOzFpa1I1MWliT08waWdx

在这里插入图片描述
base 64は、次のようになります.
igq4;741R;1ikR51ibOO0igq

排他的または復号化スクリプトは次のとおりです.
import string

c = "igq4;741R;1ikR51ibOO0igq"

for i in range(0,200):
    p = ""
    for j in range(len(c)):
        p += chr(ord(c[j])^i)
    print (p)


得られた唯一の特殊文字なしflag:jdr 78472 Q 82 jhQ 62 jaLL 3 jdr 领航杯部分Writeup_第9张图片
ファイル抽出
flagをあげました.exe、stringsはすぐに画像がbase 64を回転した後の文字列を見ることができます:领航杯部分Writeup_第10张图片勝手にオンラインサイトを探して画像を回転します以下の通りです:
领航杯部分Writeup_第11张图片それからstringsはこのピクチャーを得てflagを得ます:flag{068 EEF 6 A 7 BAD 3 FDF}领航杯部分Writeup_第12张图片
forensics
pngdecodeをあげました.docx: 领航杯部分Writeup_第13张图片
最初は長い間この画像を分析していましたが、結果はありませんでした...docxドキュメント全体foremostを抽出してflag:360 HA 360 领航杯部分Writeup_第14张图片を得ました
OldCypher-Easy
密文は以下のように与えられた.
Vvr Ifnvaus Bdwokv Gbtrzsa Vkqgofntja rrlznxk eflvkozjcdue rs “mzg oez ff pjkhvtx ok kqzioeg vgfsf.” Zyil au vvykokaeoyrp avuwfnzv, bnl fcry eom ucdgaie mzg qhxiegl dfrguta gh huk wixdf ce oks ijggrtk-dtq uqvketbxkq sulnwsvwbtj. Taw fssoeimaqb sutulwu gbrvlr gp huk towwu hugk htng prke ulwf tbx teglwfvkj th wpoorv sxutsg ifmfmpwpgkihf. Dig iiyilquegghr fqknjryl wpqbsgalkgg zath fgts gnrn mzkg: vz uetdu kvzy mxujoaojml xqf rtjukapu vtkezjkhl, zvcafkehkj fhj glpnrnzapu fktrxl msly, grhlqqbrj fhj cignvnmaeogoeg nkgff, kcevltcaot anuvwbtj agv gzrikihfu, rvmzttd eofn, rnw eqfr. Cztagwh nzkefhvwam ko ijqjvjv a vgodykke vzcfnikekabogofn, pw ychru stq vvnz dowwtb pxppmgifnvyy bfxcybvs mzg ggauy hx oognvmtlkqnr kevzpwdavs ygt grilrbfi rvmzttd kbsuimtlkca, ypsmwog, ntu dbkvfvhltxv eczvlttlkcay rgtapgg guvxjuoeorl tlvopqj. fesi{42s96q9hw73d79v4xf5308t18o8519is10c512u2}

最後の一連の明示的なflagのフォーマットは、このサイトでバージニアの復号化を行います.https://www.guballa.de/vigenere-solver
flag:flag{42 e 96 d 9 bf 73 d 79 c 4 fd 5308 f 18 b 8519 cb 10 c 512 b 2}领航杯部分Writeup_第15张图片を得る
MasterofZip-Middle
level1
圧縮パッケージとReadmeをあげましたmdの内容は以下の通りです.
              zip,                   199,          ?(         ,          )

そこで199の最初の携帯電話番号を爆破し、パスワードを得た:199505453796 领航杯部分Writeup_第16张图片
level2
第1層を解凍して圧縮パッケージとReadmeを得る.txt、内容は重要ではありませんが、level 2が表示されます.zipの中にもReadmeがあります.txt,だから明文攻撃を試みて、鍵を正常に回復して解凍します:领航杯部分Writeup_第17张图片
level3
第2層の解凍後、圧縮パケットが1つしか与えられなかったので、偽暗号化を試みた:领航杯部分Writeup_第18张图片矢印の位置を0に修正し、解凍に成功し、次の画像を得た:领航杯部分Writeup_第19张图片それから画像の高さを修正した:领航杯部分Writeup_第20张图片
flag:flag{4537 ec 3 bd 52 ba 2 b 41 c 4 a 780 db 841 efc 3 ddccc 4 a 4}领航杯部分Writeup_第21张图片を得る
パケット分析-EAsy
テーマはhttp 3にあげました.pcapは、流量分析を行い、テーマの説明に基づいて、直接HTTPの対象リストを導出し、flagを発見した.php: 领航杯部分Writeup_第22张图片
エクスポート後、flag:flag{3 eyufhnj 87}在这里插入图片描述が表示されます.
EasyRSA
タイトルは暗号化スクリプトに次のように与えられました.
from Crypto.Util.number import getPrime, inverse
flag = 'flag{a-z0-9}'
nbits = 2048
p = getPrime(nbits / 2)
q = getPrime(nbits / 2)
assert p != q
N = p * q
e = 0x10001
phiN = (p - 1) * (q - 1)
d = inverse(e, phiN)
phint = d % (p - 1)
qhint = q % (p - 1)


def str2int(s):
    return int(s.encode('hex'), 16)


with open('pubkey.txt', 'w') as f:
    f.write(str(e) + '
'
) f.write(str(N) + '
'
) f.write(str(phint) + '
'
) f.write(str(qhint) + '
'
) plain = str2int(flag) c = pow(plain, e, N) with open('cipher.txt', 'w') as f: f.write(hex(c))

でも実際は何の役にも立たないpubkey.txtの中でそれぞれ対応する内容、すなわち:
e = 65537
N = 16969752165509132627630266968748854330340701692125427619559836488350298234735571480353078614975580378467355952333755313935516513773552163392952656321490268452556604858966899956242107008410558657924344295651939297328007932245741660910510032969527598266270511004857674534802203387399678231880894252328431133224653544948661283777645985028207609526654816645155558915197745062569124587412378716049814040670665079480055644873470756602993387261939566958806296599782943460141582045150971031211218617091283284118573714029266331227327398724265170352646794068702789645980810005549376399535110820052472419846801809110186557162127
phint = 1781625775291028870269685257521108090329543012728705467782546913951537642623621769246441122189948671374990946405164459867410646825591310622618379116284293794090970292165263334749393009999335413089903796624326168039618287078192646490488534062803960418790874890435529393047389228718835244370645215187358081805
qhint = 10450978538445496868237560522155647855468044038637044818500580506745232482415364474390893285539835615564332910332708101539048528242011762736342572650763270501265440674647489375438852377280494520168349154604800218665628586180057648386859933274414030182106920793492451577530884172876623074281199949317487086975


ここのphintとqhintは実際にはよく言われるdpとdqである.
密文は以下のように返された.
0x7b5d1ea2d92df27239817ce8d885e1f66569dd41e075efc13d09dd1df673a8fba68ec7487c1552028e9eb9ba6663983f96d01925bbdfd18398e44f970257fa0f96b6ec915d05d637ebb4c8f4c56c44b2bb46bd1afe5a67acd640585dccf1681155308c0663cb57fccdc10c097c454dafdd2a96ccd08e9a2a8b0a9727bbe9945e579b0652d1c1d826305f0dd716cfb647cadb8eca1a0286dfb938b60b89981403d4faa6df54cfac0fa4699c97aeba6e82ab575cd6aa4421018cf9b404836c02b5301dbc475a0bcc5eef86bcbeb89a73355dbeb80e7b4d23c7a39f32c6b6138125c73892633f46b0bf1114aa67f09e1d394dfa4020e318f7d8004b84fc835b1ee9L

だからこの問題はc、e、n、dp、dqがあって、明文を解くのに十分です.
この記事を参考にしてください.https://skysec.top/2018/08/24/RSA%E4%B9%8B%E6%8B%92%E7%BB%9D%E5%A5%97%E8%B7%AF(1)/
最終的な復号スクリプトは次のとおりです.
import gmpy2
import libnum
e = 65537
n = 16969752165509132627630266968748854330340701692125427619559836488350298234735571480353078614975580378467355952333755313935516513773552163392952656321490268452556604858966899956242107008410558657924344295651939297328007932245741660910510032969527598266270511004857674534802203387399678231880894252328431133224653544948661283777645985028207609526654816645155558915197745062569124587412378716049814040670665079480055644873470756602993387261939566958806296599782943460141582045150971031211218617091283284118573714029266331227327398724265170352646794068702789645980810005549376399535110820052472419846801809110186557162127
dp = 1781625775291028870269685257521108090329543012728705467782546913951537642623621769246441122189948671374990946405164459867410646825591310622618379116284293794090970292165263334749393009999335413089903796624326168039618287078192646490488534062803960418790874890435529393047389228718835244370645215187358081805
c = "0x7b5d1ea2d92df27239817ce8d885e1f66569dd41e075efc13d09dd1df673a8fba68ec7487c1552028e9eb9ba6663983f96d01925bbdfd18398e44f970257fa0f96b6ec915d05d637ebb4c8f4c56c44b2bb46bd1afe5a67acd640585dccf1681155308c0663cb57fccdc10c097c454dafdd2a96ccd08e9a2a8b0a9727bbe9945e579b0652d1c1d826305f0dd716cfb647cadb8eca1a0286dfb938b60b89981403d4faa6df54cfac0fa4699c97aeba6e82ab575cd6aa4421018cf9b404836c02b5301dbc475a0bcc5eef86bcbeb89a73355dbeb80e7b4d23c7a39f32c6b6138125c73892633f46b0bf1114aa67f09e1d394dfa4020e318f7d8004b84fc835b1ee9L"
c = int(c[:-1], 16)
for i in range(1,65538):
    if (dp*e-1)%i == 0:
        if n%(((dp*e-1)/i)+1)==0:
            p=((dp*e-1)/i)+1
            q=n/(((dp*e-1)/i)+1)
            phi = (p-1)*(q-1)
            d = gmpy2.invert(e,phi)%phi
            print libnum.n2s(pow(c,d,n))


運転してflag:flag{6 b 85823 e 6 f 121 a 7 bb 3407 ff 2 e 9 f 5 f 2 f 27 efcc 5 a 6}を得る
在这里插入图片描述