この大会は2020/12/19 19:30(JST)~2020/12/20 19:30(JST)に開催されました。
今回もチームで参戦。結果は4374点で442チーム中18位でした。
自分で解けた問題をWriteupとして書いておきます。
Sanity Check (VULNCON 2020)
Instructionsのページでフラグの一部があった。
vulncon{w3_4
Rulesのページにもあった。
r3_N00B_4rMY}
結合すると、フラグになる。
vulncon{w3_4r3_N00B_4rMY}
Pcaped (Miscellaneous)
TCPに1バイトずつ多数の通信パケットに含まれているので、集めていく。集めるとbase64文字列になるので、デコードするとフラグになる。
from scapy.all import * packets = rdpcap('Data.pcapng') data = '' for p in packets: if p.haslayer(IP) and p.haslayer(TCP): if p[IP].dst == '172.16.139.128' and p[TCP].dport == 4545: if p.haslayer(Raw): data += p[Raw].load.rstrip() print '[+] data: ', data flag = data.decode('base64') print '[*] flag: ', flag
実行結果は以下の通り。
[+] data: VGhlIGZsYWcgaXMtPiBCMXRfYnlfQjF0X3YxYV9uYwo= [*] flag: The flag is-> B1t_by_B1t_v1a_nc
vulncon{B1t_by_B1t_v1a_nc}
All I know was zip (Miscellaneous)
16進数の値が羅列されているので、デコードしてバイナリにする。
with open('file.txt', 'r') as f: code_str = f.read().replace('\n', '') data = '' codes = code_str.split(', ') for code in codes: data += chr(int(code, 16)) with open('flag.zip', 'wb') as f: f.write(data)
バイナリにしたzipを解凍すると、encrption.pdfが展開される。このpdfはパスワードがかかっているので、クラックする。
$ pdfcrack --wordlist=dict/rockyou.txt encrption.pdf PDF version 1.7 Security Handler: Standard V: 2 R: 3 P: -4 Length: 128 Encrypted Metadata: True FileID: 711e4d90e5d70fb92c3af750cceac6cc U: 03f0fafc462dd0c18b42cc6ccfc5825d28bf4e5e4e758a4164004e56fffa0108 O: e7bb9840492c36e5b7ca2f8128ea45e3a318f45fa979d4e48a1458486c5bb9c2 found user-password: 'butterfly'
このパスワードでファイルを開くと、シンボルを使った換字式暗号と推測できる暗号が書いてあった。
いろいろと調べたら、「Dragon language」というもののようだった。
以下を参考に復号してみる。
- https://et.maisfontes.com/dragon-alphabet-thuum - https://diaryofadragonborn.tumblr.com/post/27274240213/the-word-wall-guide-to-the-dragon-language-part
vuln9ondra 9oni9is98l
以下の変換をする。
9->c 8->oo
vulncondra coniciscool
vulncon{draconic_is_cool}
T1G3R (Miscellaneous)
$ steghide extract -sf tiger.jpeg -p tiger wrote extracted data to "hash.txt". $ cat hash.txt 6e2dfb581bbe2b0f82e59781fb962ff9099e8d82f45f1496
48桁(192bit)のハッシュなので、Tigerハッシュと推測。https://md5hashing.net/hash/tiger192,3/で調べる。
you are going good go get the flag password is "Tiger_is_cool"
このパスワードでzipファイルを解凍する。
$ unzip -P Tiger_is_cool flag.zip Archive: flag.zip inflating: flag $ file flag flag: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=0364adb6bf4349e7b93ec9d12d0d851b29a92001, for GNU/Linux 3.2.0, not stripped $ ./flag pi pi pi pi pi pi pi pi pi pi pika pipi pi pipi pi pi pi pipi pi pi pi pi pi pi pi pipi pi pi pi pi pi pi pi pi pi pi pichu pichu pichu pichu ka chu pipi pipi pipi pipi pi pi pi pi pikachu pi pi pi pi pi pi pi pi pi pi pi pi pikachu pikachu ka ka ka ka pikachu pi pi pi pikachu pichu ka ka ka ka ka ka ka ka ka ka ka ka pikachu ka ka ka ka ka ka ka ka ka ka ka pikachu pikachu pipi ka ka ka pikachu ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka pikachu pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pikachu pi pikachu ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka pikachu ka ka ka pikachu pi pi pi pi pi pi pi pikachu pi pi pi pi pi pikachu pichu ka pikachu pipi ka ka ka ka ka ka ka ka ka ka ka pikachu pi pi pi pi pi pi pi pi pi pi pi pi pikachu ka ka pikachu pichu pi pikachu pipi ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka ka pikachu ka pikachu pikachu pichu pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pikachu pi pi pi pi pi pi pi pi pikachu pipi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pi pikachu pichu pi pi pi pi pi pi pi pikachu pipi ka ka ka ka pikachu
解凍すると、flagが展開され、esolangと思われる言語で書かれた文字列が書いてあった。調べてみるとPikalangというのがあるらしい。
https://www.dcode.fr/pikalang-languageでデコードすると、以下のURLが出てきた。
https://pastebin.com/YXXBJwQs
このURLにアクセスすると、フラグが書いてあった。
vulncon{@Tiger_are_preu_hackers!!!!}
Game Over (Memory Forensic)
メモリダンプを解析して、マルウェア感染したときにアクセスしたURLと時刻を答える必要がある。
$ volatility -f dump.raw imageinfo Volatility Foundation Volatility Framework 2.6 INFO : volatility.debug : Determining profile based on KDBG search... Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418 AS Layer1 : WindowsAMD64PagedMemory (Kernel AS) AS Layer2 : FileAddressSpace (/mnt/hgfs/Shared/work/dump.raw) PAE type : No PAE DTB : 0x187000L KDBG : 0xf80002bf20a0L Number of Processors : 1 Image Type (Service Pack) : 1 KPCR for CPU 0 : 0xfffff80002bf3d00L KUSER_SHARED_DATA : 0xfffff78000000000L Image date and time : 2020-12-12 14:05:05 UTC+0000 Image local date and time : 2020-12-12 19:35:05 +0530 $ volatility -f dump.raw --profile=Win7SP1x64 pstree Volatility Foundation Volatility Framework 2.6 Name Pid PPid Thds Hnds Time -------------------------------------------------- ------ ------ ------ ------ ---- 0xfffffa8010d1a950:csrss.exe 324 316 9 406 2020-12-12 13:45:12 UTC+0000 0xfffffa8010ebd220:wininit.exe 364 316 3 76 2020-12-12 13:45:13 UTC+0000 . 0xfffffa8010ed9b30:services.exe 464 364 7 202 2020-12-12 13:45:13 UTC+0000 .. 0xfffffa8011274b30:VGAuthService. 1280 464 4 93 2020-12-12 13:45:15 UTC+0000 .. 0xfffffa80113aeb30:svchost.exe 1544 464 7 98 2020-12-12 13:45:15 UTC+0000 .. 0xfffffa801142a590:msdtc.exe 1816 464 12 142 2020-12-12 13:45:16 UTC+0000 .. 0xfffffa8010fff890:svchost.exe 660 464 7 266 2020-12-12 13:45:13 UTC+0000 .. 0xfffffa80114e7460:taskhost.exe 1348 464 7 150 2020-12-12 13:45:19 UTC+0000 .. 0xfffffa801170b9e0:svchost.exe 2800 464 10 140 2020-12-12 13:45:29 UTC+0000 .. 0xfffffa801105a980:svchost.exe 808 464 16 410 2020-12-12 13:45:13 UTC+0000 ... 0xfffffa80115b2060:dwm.exe 2424 808 3 72 2020-12-12 13:45:27 UTC+0000 .. 0xfffffa80112f3060:dllhost.exe 1736 464 13 185 2020-12-12 13:45:16 UTC+0000 .. 0xfffffa8011302b30:svchost.exe 692 464 8 314 2020-12-12 13:47:16 UTC+0000 .. 0xfffffa8011035b30:svchost.exe 736 464 19 472 2020-12-12 13:45:13 UTC+0000 ... 0xfffffa80117fa060:audiodg.exe 3812 736 4 125 2020-12-12 14:00:16 UTC+0000 .. 0xfffffa8011070b30:svchost.exe 840 464 40 984 2020-12-12 13:45:13 UTC+0000 .. 0xfffffa80112e4910:vmtoolsd.exe 1356 464 11 292 2020-12-12 13:45:15 UTC+0000 ... 0xfffffa8011801b30:cmd.exe 3660 1356 0 ------ 2020-12-12 14:05:05 UTC+0000 .. 0xfffffa8010f8eb30:svchost.exe 596 464 10 353 2020-12-12 13:45:13 UTC+0000 ... 0xfffffa801146bb30:WmiPrvSE.exe 1980 596 10 203 2020-12-12 13:45:16 UTC+0000 .. 0xfffffa80111b5960:spoolsv.exe 1112 464 12 271 2020-12-12 13:45:14 UTC+0000 .. 0xfffffa8011352b30:SearchIndexer. 3204 464 11 582 2020-12-12 13:45:34 UTC+0000 .. 0xfffffa8011172890:svchost.exe 484 464 15 464 2020-12-12 13:45:14 UTC+0000 .. 0xfffffa80110ff910:svchost.exe 1016 464 10 509 2020-12-12 13:45:14 UTC+0000 .. 0xfffffa8011517b30:sppsvc.exe 276 464 4 149 2020-12-12 13:45:19 UTC+0000 .. 0xfffffa80111cfb30:svchost.exe 1148 464 18 327 2020-12-12 13:45:14 UTC+0000 . 0xfffffa8010f357f0:lsass.exe 480 364 7 694 2020-12-12 13:45:13 UTC+0000 . 0xfffffa8010edb580:lsm.exe 488 364 9 154 2020-12-12 13:45:13 UTC+0000 0xfffffa80115aa950:explorer.exe 2448 2412 20 654 2020-12-12 13:45:27 UTC+0000 . 0xfffffa8011671b30:chrome.exe 2588 2448 29 921 2020-12-12 13:45:28 UTC+0000 .. 0xfffffa8011840670:chrome.exe 2944 2588 7 130 2020-12-12 13:45:29 UTC+0000 .. 0xfffffa80118441e0:chrome.exe 252 2588 0 ------ 2020-12-12 13:46:36 UTC+0000 .. 0xfffffa80117d1060:chrome.exe 2528 2588 12 240 2020-12-12 14:04:11 UTC+0000 .. 0xfffffa80116bfb30:chrome.exe 2664 2588 9 92 2020-12-12 13:45:28 UTC+0000 .. 0xfffffa801187bb30:chrome.exe 2996 2588 14 224 2020-12-12 13:45:29 UTC+0000 .. 0xfffffa8011919060:chrome.exe 3020 2588 12 174 2020-12-12 13:45:29 UTC+0000 .. 0xfffffa80117e16b0:chrome.exe 2908 2588 14 201 2020-12-12 13:45:29 UTC+0000 .. 0xfffffa80115d2b30:chrome.exe 2164 2588 8 206 2020-12-12 13:45:32 UTC+0000 .. 0xfffffa80115aeb30:chrome.exe 2644 2588 0 ------ 2020-12-12 13:46:36 UTC+0000 .. 0xfffffa80118a8b30:chrome.exe 2864 2588 13 199 2020-12-12 14:04:12 UTC+0000 . 0xfffffa8011662060:sidebar.exe 2556 2448 7 233 2020-12-12 13:45:28 UTC+0000 . 0xfffffa8010427790:vmtoolsd.exe 2544 2448 8 154 2020-12-12 13:45:28 UTC+0000 . 0xfffffa801165a2e0:vm3dservice.ex 2536 2448 2 39 2020-12-12 13:45:28 UTC+0000 0xfffffa800f919990:System 4 0 87 407 2020-12-12 13:45:12 UTC+0000 . 0xfffffa80100fa8c0:smss.exe 244 4 2 29 2020-12-12 13:45:12 UTC+0000 0xfffffa80110b21a0:GoogleCrashHan 2284 2216 5 92 2020-12-12 13:45:22 UTC+0000 0xfffffa801103cb30:GoogleCrashHan 2276 2216 5 100 2020-12-12 13:45:22 UTC+0000 0xfffffa8010ee1060:winlogon.exe 408 356 4 114 2020-12-12 13:45:13 UTC+0000 0xfffffa8010ebe060:csrss.exe 372 356 14 446 2020-12-12 13:45:13 UTC+0000 . 0xfffffa80118a77d0:conhost.exe 4032 372 1 34 2020-12-12 13:45:40 UTC+0000 0xfffffa80111a4b30:mailspring.exe 2596 2616 31 569 2020-12-12 13:45:32 UTC+0000 . 0xfffffa8011321630:mailspring.exe 2196 2596 3 126 2020-12-12 13:45:33 UTC+0000 . 0xfffffa801172bb30:mailspring.exe 3416 2596 19 213 2020-12-12 13:45:34 UTC+0000 . 0xfffffa8011760b30:mailspring.exe 3604 2596 0 ------ 2020-12-12 13:45:35 UTC+0000 . 0xfffffa801167e3b0:mailspring.exe 3272 2596 0 ------ 2020-12-12 13:45:34 UTC+0000 . 0xfffffa8011464b30:mailspring.exe 3424 2596 20 328 2020-12-12 13:45:34 UTC+0000 .. 0xfffffa80118a55f0:mailsync.exe 4020 3424 12 466 2020-12-12 13:45:39 UTC+0000 0xfffffa801173d140:dwm.exe 2932 2004 6 159 2020-12-12 13:58:01 UTC+0000 . 0xfffffa80117662e0:netsh.exe 1696 2932 0 ------ 2020-12-12 13:58:07 UTC+0000
Chromeでサイトにアクセスしていると思われる。
$ volatility --plugins=../plugins -f dump.raw --profile=Win7SP1x64 chromehistory Volatility Foundation Volatility Framework 2.6 Index URL Title Visits Typed Last Visit Time Hidden Favicon ID ------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------ ----- -------------------------- ------ ---------- 7 https://www.google.com/search?source=hp...QCgAQGqAQdnd3Mtd2l6sAEA&sclient=psy-ab facebook - Google खोजी 2 0 2020-12-12 13:46:13.497778 N/A 1 http://google.com/ Google 2 2 2020-12-12 13:46:06.035590 N/A 4 https://www.google.com/search?source=hp...nO2MycjtAhW3zzgGHcBJDXIQ4dUDCAc&uact=5 online betting game - Google खोजी 3 0 2020-12-12 13:42:15.187823 N/A 8 https://www.facebook.com/ Facebook - Log In or Sign Up 2 0 2020-12-12 13:46:16.862696 N/A 2 http://www.google.com/ Google 2 0 2020-12-12 13:46:06.035590 N/A 6 https://www.gamblingsites.org/ Online Gambling Sites - Best Real Money Gambling Sites 2020 1 0 2020-12-12 13:43:07.638967 N/A 3 https://www.google.com/ Google 2 0 2020-12-12 13:46:06.035590 N/A 4 https://www.google.com/search?source=hp...nO2MycjtAhW3zzgGHcBJDXIQ4dUDCAc&uact=5 online betting game - Google खोजी 3 0 2020-12-12 13:42:15.187823 N/A 7 https://www.goov%;|eo������...�i�y�Yd�(� 1 0 1601-01-01 00:00:00 N/A 1 http://google.com/ Google 1 1 2020-12-12 13:41:40.947451 N/A
vulncon{gamblingsites.org-12-12-2020}
Attack (Forensic)
仮想イメージが添付されているので、攻撃者のIPアドレスと、どのような攻撃がされていたかを答える。
auth.logを見ると、192.168.30.1からsshでuser=karmaの認証失敗が続いていることがわかる。
vulncon{192.168.30.1_bruteforce}
Compromise (Forensic)
侵害されたユーザのユーザ名とパスワードを答える。
root@innocent:~# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false syslog:x:104:108::/home/syslog:/bin/false _apt:x:105:65534::/nonexistent:/bin/false lxd:x:106:65534::/var/lib/lxd/:/bin/false messagebus:x:107:111::/var/run/dbus:/bin/false uuidd:x:108:112::/run/uuidd:/bin/false dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false karma:x:1002:1002:,,,:/home/karma:/bin/bash root@innocent:~# cat /etc/shadow root:$6$feJDQPNQ$UcnsMIXNSPoj80LSnVg9EFp6FhU3cNs130FOLOHXctzHbVkzKnIyZEY2NhmHn3F6UzdBhXcdw2bJeA1y6M8MI/:18616:0:99999:7::: daemon:*:18584:0:99999:7::: bin:*:18584:0:99999:7::: sys:*:18584:0:99999:7::: sync:*:18584:0:99999:7::: games:*:18584:0:99999:7::: man:*:18584:0:99999:7::: lp:*:18584:0:99999:7::: mail:*:18584:0:99999:7::: news:*:18584:0:99999:7::: uucp:*:18584:0:99999:7::: proxy:*:18584:0:99999:7::: www-data:*:18584:0:99999:7::: backup:*:18584:0:99999:7::: list:*:18584:0:99999:7::: irc:*:18584:0:99999:7::: gnats:*:18584:0:99999:7::: nobody:*:18584:0:99999:7::: systemd-timesync:*:18584:0:99999:7::: systemd-network:*:18584:0:99999:7::: systemd-resolve:*:18584:0:99999:7::: systemd-bus-proxy:*:18584:0:99999:7::: syslog:*:18584:0:99999:7::: _apt:*:18584:0:99999:7::: lxd:*:18584:0:99999:7::: messagebus:*:18584:0:99999:7::: uuidd:*:18584:0:99999:7::: dnsmasq:*:18584:0:99999:7::: sshd:*:18584:0:99999:7::: pollinate:*:18584:0:99999:7::: karma:$6$hKdO3pAp$wAMPSH2X4PESTuGwPXrsOBzJRZJBS7lv.Ajx4IIM3P5zBXx5a7NfPdB8V.x0zaEBSlmB2trLbGVprjJFW3VDe/:18598:0:99999:7:::
侵害されたユーザは karma。該当する行だけ抜き出し、クラックする。
$ unshadow passwd shadow > passwd_shadow $ ~/john-1.9.0-jumbo-1/run/john --wordlist=dict/rockyou.txt passwd_shadow Warning: detected hash type "sha512crypt", but the string is also recognized as "sha512crypt-opencl" Use the "--format=sha512crypt-opencl" option to force loading these as that type instead Using default input encoding: UTF-8 Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 128/128 AVX 2x]) Cost 1 (iteration count) is 5000 for all loaded hashes Will run 2 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status godisgood (karma) 1g 0:00:00:01 DONE (2020-12-20 14:17) 0.7936g/s 914.2p/s 914.2c/s 914.2C/s kucing..summer1 Use the "--show" option to display all of the cracked passwords reliably Session completed
vulncon{karma_godisgood}
Suspicious (Forensic)
攻撃に使ったツールのダウンロード先のURLを答える。
root@innocent:# cd /home/karma root@innocent:/home/karma# ls hack privilege-escalation-awesome-scripts-suite
privilege-escalation-awesome-scripts-suiteがダウンロードされているので、そのURLを調べて答える。
vulncon{https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite}
Secret (Forensic)
秘密ファイルのファイルパスを答える。
root@innocent:/home/karma# find / -name *secret* /proc/sys/net/ipv4/ipfrag_secret_interval /proc/sys/net/ipv6/conf/all/stable_secret /proc/sys/net/ipv6/conf/default/stable_secret /proc/sys/net/ipv6/conf/enp0s3/stable_secret /proc/sys/net/ipv6/conf/enp0s8/stable_secret /proc/sys/net/ipv6/conf/lo/stable_secret /proc/sys/net/ipv6/ip6frag_secret_interval /etc/.secret /etc/.secret/file/is/here/thisissupersecretfile /etc/.secret/file/is/thisissecretfile root@innocent:~# cat /etc/.secret/file/is/here/thisissupersecretfile top secret info
vulncon{/etc/.secret/file/is/here/thisissupersecretfile}
Go On Date? (Cryptography)
Vigenere暗号と推測する。https://www.dcode.fr/vigenere-cipherでいろいろ復号方法を変えながら試す。???? shift cipher encodingsに復号できそう。鍵を確認する。
1111111111222222 01234567890123456789012345 abcdefghijklmnopqrstuvwxyz ???? shift cipher encodings ddve uhkft fkpjet enfqdknis s(18) -> u(20) + 2(c) h(07) -> h(07) + 0(a) i(08) -> k(10) + 2(c) f(05) -> f(05) + 0(a) t(19) -> t(19) + 0(a) c(02) -> f(05) + 3(d) i(08) -> k(10) + 2(c) p(15) -> p(15) + 0(a) h(07) -> j(09) + 2(c) e(04) -> e(04) + 0(a) r(17) -> t(19) + 2(c) e(04) -> e(04) + 0(a) n(13) -> n(13) + 0(a) c(02) -> f(05) + 3(d)
キーを "ADCACACA" にすると復号できた。
date shift cipher encodings
vulncon{date_shift_cipher_encodings}
can_you_c_the_password? (Cryptography)
Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xmlを見る。
name="n00b_us3r" image="0" changedcpassword="HlQWFdlPXQTU7n8W9VbsVTP245DcAJAUQeAZZfkJE/Q8ZlWgwj7CqKl6YiPvKbQFO7PWS7rSwbVtSSZUhJSj5YzjbkKtyXR5fP9VQDEieMU"
この暗号方式は公開されている。暗号方式はAES-CBC。key, ivもわかっているので、それを使って復号する。
from Crypto.Cipher import AES from base64 import b64decode def unpad(s): return s[:-ord(s[-1])] cpassword = 'HlQWFdlPXQTU7n8W9VbsVTP245DcAJAUQeAZZfkJE/Q8ZlWgwj7CqKl6YiPvKbQFO7PWS7rSwbVtSSZUhJSj5YzjbkKtyXR5fP9VQDEieMU' while True: if len(cpassword) % 4 == 0: break else: cpassword += '=' password = b64decode(cpassword) key = """ 4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8 f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b """.replace(' ', '').replace('\n', '').decode('hex') cipher = AES.new(key, AES.MODE_CBC, '\x00' * 16) flag = unpad(cipher.decrypt(password)).replace('\x00', '') print flag
vulncon{s3cur1ty_h4s_3volv3d_s0__much}
PollMor (Cryptography)
英数字を対応するモールス記号(-, ., スペース)に置き換えデコードする。
morse = {'.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E', '..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J', '-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O', '.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T', '..-': 'U', '...-': 'V', '.--': 'W', '-..-':'X' , '-.--': 'Y', '--..': 'Z', '-----': '0', '.----': '1', '..---': '2', '...--': '3', '....-': '4', '.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9' } enc = 'VEXCH881U3JPMLWO6TQ4MH5G5LNVUXGN86GWR1NZ8CA82AW7MLAY4UJ3E4K38335UBAUCQY6N4SJJ1RR6VBYSAOP9P9XBI35XSEPM4GHGFY39AWE9BJTBGZW93Q3Y2Y374JDFRF9AFE' hyphen = '145BCGJNRTW' dot = '0378AEFMOPQXYV' space = '269DHIKLSUZ' codes = '' for i in range(len(enc)): if enc[i] in hyphen: codes += '-' elif enc[i] in dot: codes += '.' elif enc[i] in space: codes += ' ' else: print 'Error!' codes = codes.split(' ') flag = '' for code in codes: flag += morse[code] print flag
VULNCONP0LLUX4NDM0RSEAR3BR0TH3RS
{, }, _を入れ、フラグの形式にする。
vulncon{P0LLUX_4ND_M0RSE_AR3_BR0TH3RS}
is_it_magic? (Cryptography)
JPGのヘッダを元にXOR鍵を求め、データ全体を復号する。
with open('smokeaway.jpg.enc', 'rb') as f: enc = f.read() JPG_HEAD = '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01' key = [] for i in range(len(JPG_HEAD)): code = ord(JPG_HEAD[i]) ^ ord(enc[i]) key.append(code) flag = '' for i in range(len(enc)): flag += chr(ord(enc[i]) ^ key[i%len(key)]) with open('smokeaway.jpg', 'wb') as f: f.write(flag)
復号したJPG画像にフラグが書いてあった。
vulncon{x0r_1s_n0t_s@f3}
diffeRent_but_SimilAr (Cryptography)
Polynomial RSAの問題。因数分解して、一文字ずつ復号していく。
#!/usr/bin/env sage from public_key import e, n def decrypt(m, d): m_int = Integer(m.encode('hex'), 16) m_poly = P(R.fetch_int(m_int)) c_poly = pow(m_poly, d, n_poly) c_int = R(c_poly).integer_representation() c = format(c_int, '02x').decode('hex') return c with open('secret', 'rb') as f: encs = f.read().split('\n' * 3)[:-1] P = PolynomialRing(GF(2), 'x') n_poly = P(n) R.<a> = GF(2^2049) p, q = n_poly.factor() p, q = p[0], q[0] s = (2^p.degree()-1)*(2^q.degree()-1) d = inverse_mod(e, s) msg = '' for enc in encs: msg += decrypt(enc, d) print msg
復号結果は以下の通り。
Here is your secret password: PPfTx6>:Gc.r[~9P
このパスワードでflag.zipを解凍する。
$ unzip -P "PPfTx6>:Gc.r[~9P" flag.zip Archive: flag.zip extracting: flag.txt $ cat flag.txt vulncon{man1@C_L!k35_s@g3}
展開されたflag.txtにフラグが書いてあった。
vulncon{man1@C_L!k35_s@g3}