← Back to Writeups
HTBN/AOSINT

ZAP!

XESXOR8/23/20263 min read
#osint#htb#n/a

ZAP!

Platform: Metactf | Category: OSINT | Type: Challenge | Difficulty: Easy | OS: NA | Author: D3v0o0Nu11 | Date: 2026-04-10 | Status: Solved Techniques: catalog_profile_matching, marking_based_osint, visual_object_identification

Summary

Task: identify the exact NIA ST number of a porcelain suspension insulator from challenge photos. Solution: compare 10-inch suspension-disc candidates by engraving order and ceramic inset geometry, which uniquely points to ST-4626F instead of nearby ST-4626 variants.

Recon

Port scan

nmap -p- -sV -sC <TARGET> --min-rate 1000 -Pn
PortServiceVersionNotes
<PORT><SVC><VER><notes>

Enumeration highlights

  • Event: metactf | ID: 20260410_metactf_zap
  • Tags: electrical_insulator, image_osint, industrial_equipment, catalog_lookup, embossed_markings, engraved_markings
  • Indicators: 10-inch porcelain suspension disc profile, incuse LOCKE text visible in close-up, 10000 TEST / 20000 M&E marking order, ceramic inset geometry distinguishes near-identical NIA variants
  • Source: 20260410_metactf_zap.md

Foothold

Vulnerability / Misconfiguration

  1. Catalog_profile_matching
  2. Marking_based_osint
  3. Visual_object_identification
<command>

Exploitation

  • See original writeup content for detailed exploitation.

Privilege Escalation

Enumeration

sudo -l
find / -perm -4000 2>/dev/null
getcap -r / 2>/dev/null
cat /etc/crontab
ps aux

Exploitation

  1. N/A for challenge-type writeup; see exploitation above.
  2. Flag obtained via challenge solve.
<command>

Flags

FlagLocationValue
flagREDACTED

Key Takeaways / Lessons

  • catalog_profile_matching
  • marking_based_osint
  • visual_object_identification
  • Tags: electrical_insulator, image_osint, industrial_equipment, catalog_lookup, embossed_markings, engraved_markings

Original Writeup

<details><summary>Click to expand original content</summary>

Description

Identify the exact NIA ST number of a porcelain electrical insulator from photos.

English summary: the challenge provides several photos of a porcelain suspension insulator and asks for the exact NIA standards number.

Analysis

The assets came from the public DawgCTF spring repository challenge folder for ZAP! (I,II). The photos show a porcelain suspension-disc insulator with a rusty cap/clevis, central pin, and a multi-ring underside.

Recon narrowed it to the 10-inch porcelain suspension family. The hint to focus on small details was important: the answer was not just the general object class, but the exact NIA variant.

  • 10-inch class suspension disc silhouette
  • incuse LOCKE marking
  • engraving/order consistent with 10000 TEST / 20000 M&E
  • inset ceramic geometry that differed from nearby ST-4626 variants

The main candidates were ST-4626, ST-4625B, ST-4626A, ST-4626E, ST-3524, ST-4638, ST-4625, and ST-4626F. Previously tested variants ST-4626, ST-4625B, ST-4626A, and ST-4626E were rejected, so the comparison had to focus on engraving order and the way the ceramic body sat inside the cap.

The final match was ST-4626F, whose NIA description fits the observed details in the same 10-inch family:

  • LOCKE / 10000 TEST / 20000 M&E

That marking order, together with the inset geometry, distinguishes it from ST-4626 and other nearby catalog entries. This was a catalog-comparison OSINT task, not a generic reverse image search task.

Solution

  1. Extract the photos from the DawgCTF ZAP! challenge assets.
  2. Identify the object as a porcelain suspension-disc insulator and narrow it to the 10-inch NIA family.
  3. Use the hint to focus on close details: the incuse text and how the ceramic is inset into the cap.
  4. Compare multiple NIA candidates side by side, especially ST-4626-series entries.
  5. Eliminate rejected variants and select ST-4626F because its engraving order and geometry match the photos.
  6. Submit the exact ST number in flag format.
#!/usr/bin/env python3

def main() -> None:
    st_number = "ST-4626F"
    print(f"DawgCTF{{{st_number}}}")


if __name__ == "__main__":
    main()
</details>

Auto-tracked: saved to WriteUps; run /xesor-revise to fold lessons into XESXor_Methodology.md.

signed by XESXOR