Writeups
2026.09.12
AWS Cloud Red Teaming — CWL Meta Tech Assessment
cloudawsred-teamwriteup
Cadena de ataque completa contra infraestructura AWS: bucket S3 público → fuga de .git → SSRF+RCE en PHP → robo de credenciales IMDSv1 → enumeración IAM y descubrimiento de confianza cross-account. Con guardrails de mitigación (SCP, IAM, detección).
2026.09.12
Azure Cloud Red Teaming — CWL Meta Tech Assessment
cloudazurered-teamwriteup
Cadena de ataque contra infraestructura Azure: subdominio expuesto → fuga de .git → SSRF+RCE → robo de JWT vía IMDS (Metadata:true) → enumeración de RBAC y Entra ID vía Management y Graph API. Con guardrails de mitigación.
2026.09.12
GCP Cloud Red Teaming — CWL Meta Tech Assessment
cloudgcpred-teamwriteup
Cadena de ataque contra infraestructura GCP: service account key filtrada en un repo público → acceso gcloud → SSRF+RCE en VM → robo de token OAuth2 vía metadata (Metadata-Flavor: Google) → enumeración de IAM y GCS. Con guardrails de mitigación.
2026.09.12
Cloud Red Teaming Multi-Cloud — Teoría vs Práctica (AWS / Azure / GCP)
cloudred-teamwriteupawsazuregcp
El patrón único de explotación cloud y sus tres dialectos: SSRF + Metadata Service → credenciales temporales → enumeración. Comparativa de headers IMDS, formatos de credenciales, IAM/RBAC y APIs de gestión, con la defensa común a los tres proveedores.
2026.09.12
Índice de Labs y Plataformas de Práctica
webtoolslabsctftraining
Catálogo organizado de laboratorios vulnerables y plataformas CTF para practicar explotación web, API security y testing de aplicaciones.
2026.09.12
Username Enumeration via Different Responses — PortSwigger Lab
webauthusername-enumerationbrute-forceportswigger
Enumeración de usuarios abusando de la discrepancia entre las respuestas 'Invalid username' e 'Incorrect password' del endpoint POST /login.
2026.09.12
Offline Password Cracking — Stay-Logged-In Cookie via Stored XSS — PortSwigger Lab
webauthxsscookiemd5offline-crackingportswigger
Robo de la cookie stay-logged-in (base64(user:md5(password))) de carlos mediante XSS almacenado en comentarios y cracking offline del hash MD5.
2026.09.12
Password Reset Poisoning via Middleware — Host Header Injection — PortSwigger Lab
webauthpassword-resethost-header-injectiontoken-leakportswigger
Envenenamiento del flujo de reset de contraseña inyectando la cabecera X-Forwarded-Host para que el token temporal se envíe al exploit server del atacante.
2026.09.12
Password Brute-Force via Password Change — Broken Access Control + Response Discrepancy — PortSwigger Lab
webauthbrute-forcebroken-access-controlusername-enumerationportswigger
Fuerza bruta de la contraseña de carlos a través del endpoint /my-account/change-password, eludiendo el rate limit de /login mediante un oráculo de respuesta.
2026.09.12
Broken Brute-Force Protection — Multiple Credentials per Request — PortSwigger Lab
webauthbrute-forcerate-limitimproper-input-validationportswigger
Bypass del rate limit de /login enviando un array JSON en el campo password: cada elemento se evalúa como un intento independiente dentro de una única request.
2026.09.12
2FA Simple Bypass — Missing Server-Side Enforcement — PortSwigger Lab
webauth2famfabroken-access-controlportswigger
Bypass del segundo factor navegando directamente a /my-account?id=carlos: el MFA es un paso de navegación y no un requisito de autorización del backend.
2026.09.12
Password Reset Broken Logic — Improper Token Binding — PortSwigger Lab
webauthpassword-resetbroken-access-controltoken-bindingportswigger
Reutilización de un token de reset propio para restablecer la contraseña de carlos modificando el campo username: el backend no vincula el token al usuario.
2026.09.12
Username Enumeration via Subtly Different Responses — PortSwigger Lab
webauthusername-enumerationbrute-forceportswigger
Enumeración de usuarios por una diferencia mínima en la respuesta de login: con punto o sin punto en 'Invalid username or password'.
2026.09.12
Username Enumeration via Response Timing — PortSwigger Lab
webauthusername-enumerationtiming-side-channelbrute-forceportswigger
Enumeración de usuarios por side-channel de timing: el login con usuario válido y contraseña larga tarda >3s; bypass del rate limit con X-Forwarded-For.
2026.09.12
Broken Brute-Force Protection — IP Block Bypass — PortSwigger Lab
webauthbrute-forcerate-limitbroken-brute-force-protectionportswigger
Bypass del bloqueo por IP intercalando credenciales correctas entre intentos fallidos para resetear el contador de rate limit y forzar la contraseña de carlos.
2026.09.12
Username Enumeration via Account Lock — PortSwigger Lab
webauthusername-enumerationaccount-lockdenial-of-serviceportswigger
Enumeración de usuarios forzando el bloqueo de cuentas con 5 intentos fallidos: la respuesta de bloqueo solo aparece para cuentas existentes.
2026.09.12
2FA Broken Logic — Brute-Forcing the MFA Code — PortSwigger Lab
webauth2famfabrute-forcebroken-access-controlportswigger
Bypass de 2FA manipulando la cookie verify hacia carlos y brute-forcing el código MFA de 4 dígitos sin rate limit.
2026.09.12
Brute-Forcing a Stay-Logged-In Cookie — PortSwigger Lab
webauthbrute-forcecookiemd5offline-crackingportswigger
Fuerza bruta de la cookie persistente stay-logged-in, cuyo formato base64(user:md5(password)) permite probar todo el wordlist como cookies precalculadas.
2026.09.12
CORS vulnerability with basic origin reflection
webcorsred-teamportswigger
Explotación de una configuración CORS insegura que refleja cualquier origen: robo de la API key del administrador mediante origin reflection con credenciales.
2026.09.12
CORS vulnerability with trusted null origin
webcorsred-teamportswigger
Explotación de una whitelist CORS que confía en el origen 'null': robo de la API key del administrador vía iframe sandboxed que serializa el origin como null.
2026.09.12
DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded
webxssdom-xssred-teamportswigger
Ejecución de código vía directiva AngularJS ng-app cuando los angle brackets están codificados: el sandbox de AngularJS se elude con una expresión constructor.constructor('alert(1)')().
2026.09.12
DOM XSS in document.write sink using source location.search inside a select element
webxssdom-xssred-teamportswigger
Explotación de un sink document.write dentro de un elemento select: break out del tag <select> con el parámetro storeId para inyectar un img onerror.
2026.09.12
DOM XSS in document.write sink using source location.search
webxssdom-xssred-teamportswigger
Explotación de un sink document.write en el tracking de búsquedas: el parámetro search se concatena sin sanitización en un tag <img>, permitiendo cerrar el atributo e inyectar un script.
2026.09.12
DOM XSS in innerHTML sink using source location.search
webxssdom-xssred-teamportswigger
Explotación de un sink innerHTML en la búsqueda del blog: el parámetro search se asigna al DOM sin sanitización y un img onerror dispara alert(document.domain).
2026.09.12
DOM XSS in jQuery anchor href attribute sink using location.search source
webxssdom-xssred-teamportswigger
Abuso de un sink jQuery .attr('href') controlado por location.search: el parámetro returnPath se inyecta como javascript:alert(document.cookie) en el enlace Back.
2026.09.12
DOM XSS in jQuery selector sink using a hashchange event
webxssdom-xssred-teamportswigger
Inyección DOM XSS a través del evento hashchange: el selector jQuery $('section.blog-list h2:contains(...)') evalúa location.hash y permite construir un payload de dos valores que ejecuta print().
2026.09.12
Reflected XSS into a JavaScript string with angle brackets HTML encoded
webxssred-teamportswigger
Bypass de codificación HTML en un contexto JavaScript: dentro de una string, cerrar la comilla simple y comentar el resto ejecuta alert(1) sin necesidad de angle brackets.
2026.09.12
Reflected XSS into attribute with angle brackets HTML-encoded
webxssred-teamportswigger
Bypass de HTML-encoding de angle brackets dentro de un atributo: cerrar la comilla e inyectar autofocus onfocus ejecuta alert(document.domain) sin usar < ni >.
2026.09.12
CSRF vulnerability with no defenses
webcsrfred-teamportswigger
Cambio de email sin ninguna defensa CSRF: un formulario auto-submit alojado en el exploit server muta el email de la víctima aprovechando la cookie de sesión.
2026.09.12
CSRF where token validation depends on request method
webcsrfred-teamportswigger
Bypass de protección CSRF cambiando el método HTTP: el servidor solo valida el token en POST, por lo que un formulario GET auto-submit cambia el email de la víctima.
2026.09.12
Manipulating WebSocket messages to exploit vulnerabilities
webwebsocketxssred-teamportswigger
XSS persistente en el chat en vivo vía manipulación de mensajes WebSocket: el servidor no sanitiza el contenido y el agente de soporte renderiza el payload como HTML.
2026.09.12
Basic clickjacking with CSRF token protection
webclickjackingcsrfred-teamportswigger
Bypass de protección CSRF mediante clickjacking: un iframe transparente superpuesto a un señuelo hace que la víctima elimine su cuenta haciendo clic donde no cree.
2026.09.12
Clickjacking with a frame buster script
webclickjackingred-teamportswigger
Bypass del frame buster con el atributo sandbox: un iframe sin allow-scripts neutraliza el script anti-framing y permite clickjacking para cambiar el email.
2026.09.12
Clickjacking with form input data prefilled from a URL parameter
webclickjackingred-teamportswigger
Clickjacking combinado con prefill de formulario: la página de cuenta rellena el campo email desde un parámetro URL y un iframe transparente engaña al usuario a enviar el cambio.
2026.09.12
Exploiting clickjacking vulnerability to trigger DOM-based XSS
webclickjackingxssdom-xssred-teamportswigger
Cadena clickjacking + DOM XSS: el nombre de feedback se inyecta vía innerHTML, se pre-rellena desde la URL y ClickBandit orquesta el clic que dispara print().
2026.09.12
Authentication bypass via OAuth implicit flow
weboauthauthimplicit-flowred-teamportswigger
Bypass de autenticación abusando del flujo OAuth implícito: la app cliente confía en el email enviado a /authenticate sin vincularlo al access token, permitiendo suplantar la identidad de carlos.
2026.09.12
Forced OAuth profile linking
weboauthcsrfaccount-linkingred-teamportswigger
CSRF en el flujo de vinculación de perfil OAuth: ausencia del parámetro state permite forzar al admin a vincular el perfil social del atacante mediante un iframe con el code de oauth-linking.
2026.09.12
SSRF via OpenID dynamic client registration
weboauthssrfcloudred-teamportswigger
OpenID Dynamic Client Registration SSRF: el campo logo_uri de POST /reg es fetcheado por el proveedor OAuth, permitiendo leer el metadata IAM de la nube en 169.254.169.254.
2026.09.12
Stealing OAuth access tokens via an open redirect
weboauthopen-redirecttoken-theftred-teamportswigger
Robo de access tokens OAuth mediante open redirect: bypass del whitelist de redirect_uri con path traversal hacia /post/next?path= y captura del token en el fragment de la URL en el exploit server.
2026.09.12
JWT authentication bypass via algorithm confusion with no exposed key
webjwtauthalgorithm-confusionred-teamportswigger
Derivación de la clave pública RSA a partir de dos JWTs firmados con sig2n para forjar un token de administrador mediante algorithm confusion RS256→HS256.
2026.09.12
JWT authentication bypass via algorithm confusion
webjwtauthalgorithm-confusionred-teamportswigger
Algorithm confusion RS256→HS256 explotando la clave pública RSA expuesta en /jwks.json: reutilización del material público como secreto HMAC para firmar un token de administrador.
2026.09.12
JWT authentication bypass via flawed signature verification
webjwtauthalg-nonered-teamportswigger
Alg none attack sobre un servidor que verifica la firma de forma incorrecta: alternar alg None/nOne/none y forjar un token de administrador con jwt_tool.
2026.09.12
JWT Authentication Bypass — JKU Header Injection (Server-Side Key Fetch)
webjwtred-teamwriteup
Bypass de autenticación forjando un JWT cuyo header jku (RFC 7515 §4.1.2) apunta a un JWK Set controlado por el atacante. El verificador descarga la clave sin allowlist de origen: el atacante firma como administrator y la firma valida.
2026.09.12
JWT authentication bypass via jwk header injection
webjwtauthjwk-header-injectionred-teamportswigger
jwk header injection: el servidor usa la clave de verificación embebida en el propio token (parámetro jwk) sin validar su origen, permitiendo firmar tokens con una clave RSA propia.
2026.09.12
JWT authentication bypass via kid header path traversal
webjwtauthkid-path-traversalpath-traversalred-teamportswigger
kid path traversal: el servidor lee la clave de verificación del filesystem usando el valor del header kid, permitiendo apuntar a /dev/null y firmar con el secreto vacío.
2026.09.12
JWT authentication bypass via unverified signature
webjwtauthred-teamportswigger
Bypass de autenticación por firma no verificada: el servidor no valida la firma de los JWTs, por lo que basta con modificar el claim sub (jwt_tool, base64 manual o jwtear) para acceder a /admin.
2026.09.12
JWT authentication bypass via weak signing key
webjwtauthweak-secretbrute-forcered-teamportswigger
Brute force de la clave de firma HS256 con hashcat (-m 16500) y rockyou: recuperado el secreto 'secret1', se firma un token de administrador con JWT Editor y se elimina a carlos.
2026.09.12
Limit overrun race conditions
webrace-conditionbusiness-logicred-teamportswigger
Explotación de una race condition de límite con single-packet attack: la validación del cupón se hace antes del uso, permitiendo aplicar el mismo descuento múltiples veces en paralelo.
2026.09.12
Multi-endpoint race conditions
webrace-conditionbusiness-logicred-teamportswigger
Cadena de race condition multi-endpoint: comprar gift cards en paralelo antes de que el checkout consolide el balance, acumulando crédito sin límite mediante una ventana de carrera entre endpoints.
2026.09.12
Single-endpoint race conditions
webrace-conditionaccess-controlauthred-teamportswigger
Race condition de un solo endpoint: dos solicitudes de cambio de email en paralelo compiten por el único registro pendiente y el token de una dirección termina en el correo de la otra, permitiendo apropiarse de la invitación de admin.
2026.09.12
Exploiting time-sensitive vulnerabilities
webrace-conditionauthhost-headerred-teamportswigger
Race condition time-sensitive sobre el reset de contraseña: eludir el session lock de PHP con sesiones distintas hace que dos requests en paralelo compartan el mismo token, apropiándose del reset de carlos.
2026.09.12
Partial construction race conditions
webrace-conditionaccess-controlauthred-teamportswigger
Explotación de una race condition de construcción parcial: entre la inserción del usuario y la asignación de su token de confirmación existe un null que se puede capturar enviando /confirm?token[]= en paralelo al registro.
2026.09.12
Modifying serialized objects
webdeserializationauthaccess-controlred-teamportswigger
Escalada de privilegios por modificación de un objeto PHP serializado en la cookie de sesión: voltear el flag admin de b:0 a b:1 concede acceso administrativo.
2026.09.12
Excessive trust in client-side controls
webbusiness-logicred-teamportswigger
Flaw de lógica de negocio: el precio se envía como parámetro del cliente. Añadir al carrito con price=1 compra el l33t leather jacket por 1 dólar.
2026.09.12
User ID controlled by request parameter
webaccess-controlidorauthred-teamportswigger
Escalada horizontal (IDOR) en la página de cuenta: el endpoint usa el parámetro id directamente para resolver el perfil, exponiendo la API key de otros usuarios.
2026.09.12
User role can be modified in user profile
webaccess-controlmass-assignmentauthred-teamportswigger
Escalada vertical por mass assignment: el endpoint de actualización de perfil acepta un campo roleid no declarado en la UI, elevando al usuario a roleid 2 para acceder al panel admin.
2026.09.12
SSRF with whitelist-based input filter
webssrfred-teamportswigger
Bypass de filtro SSRF con whitelist de dominio usando el patrón userinfo '@': la URL se normaliza en el cliente y resuelve a localhost dentro de la whitelist.
2026.09.12
Exploiting cache server normalization for web cache deception
webcache-deceptionred-teamportswigger
Web cache deception vía normalización de la caché: el cache server resuelve una secuencia de path traversal mientras el origin usa # como delimitador, cacheando la respuesta de /my-account.
2026.09.12
Exploiting exact-match cache rules for web cache deception
webcache-deceptionred-teamportswigger
Web cache deception con reglas de caché exact-match: ; y ? actúan como delimitadores y el cache server resuelve path traversal, cacheando /my-account bajo /robots.txt.
2026.09.12
Exploiting origin server normalization for web cache deception
webcache-deceptionred-teamportswigger
Web cache deception vía normalización del origin: el cache cachea todo lo que empieza por /resources mientras el origin resuelve traversal y sirve /my-account, guardando la API key en la caché.
2026.09.12
Exploiting path delimiters for web cache deception
webcache-deceptionred-teamportswigger
Web cache deception con delimitadores de path: ; convierte /my-account en un asset estático .js para la caché mientras el origin sigue sirviendo la página de cuenta, cacheando la API key de carlos.
2026.09.12
Exploiting path mapping for web cache deception
webcache-deceptionred-teamportswigger
Web cache deception por path mapping: las rutas que terminan en .js se cachean (max-age=30) aunque el origin las sirva como páginas dinámicas; se captura la API key de carlos cacheando /my-account.
2026.09.12
Basic password reset poisoning
webhost-headerauthred-teamportswigger
Password reset poisoning vía Host header: el enlace de reset se construye con el Host de la request, redirigiendo el token hacia el servidor del atacante para tomar la cuenta de carlos.
2026.09.12
Host header authentication bypass
webhost-headeraccess-controlauthred-teamportswigger
Bypass de autenticación por Host header: la app decide el privilegio según el valor de Host, por lo que /admin con Host: localhost otorga acceso y permite eliminar a carlos.
2026.09.12
OS command injection, simple case
webcommand-injectionrcered-teamportswigger
Inyección de comandos en el stock checker: el campo storeId se concatena en un shell command y &&whoami revela el usuario del proceso, confirmando RCE sin filtrado.
2026.09.12
Blind boolean-based SQLi con errores condicionales en Oracle (TrackingId)
websqliblind-sqlioracleportswigger
Exfiltración blind de la password de administrator en Oracle forzando errores condicionales por división por cero (TO_CHAR(1/0)) a través de la cookie TrackingId.
2026.09.12
Blind boolean-based SQLi con respuestas condicionales: oráculo 'Welcome back!' en la cookie TrackingId
websqliblind-sqliinformation-schemaportswigger
Extracción blind de la password de administrator usando el mensaje 'Welcome back!' como oráculo booleano en la cookie TrackingId, con information_schema y SUBSTRING.
2026.09.12
Time-based blind SQLi con pg_sleep en PostgreSQL: extracción de credenciales por retardo condicional
websqliblind-sqlitime-basedpostgresqlportswigger
Exfiltración time-based de la password de administrator en PostgreSQL usando pg_sleep condicional dentro de CASE WHEN en la cookie TrackingId.
2026.09.12
UNION-based SQLi: determinación del número de columnas (ORDER BY vs UNION SELECT NULL)
websqliunion-basedportswigger
Determinación de la aridad de una query inyectable con dos técnicas: ORDER BY incremental (error 500) y UNION SELECT NULL hasta encontrar el número de columnas sin error.
2026.09.12
UNION-based SQLi: localización de columna compatible con texto y fingerprinting PostgreSQL 12.22
websqliunion-basedpostgresqlportswigger
Segundo paso del UNION attack: identificar qué columna acepta datos string sustituyendo NULL por un literal, y de paso fingerprinting de PostgreSQL vía version().
2026.09.12
UNION-based SQLi: extracción de usuarios y credenciales desde information_schema en PostgreSQL
websqliunion-basedpostgresqlportswigger
Drenaje completo de la tabla users en PostgreSQL con UNION-based SQLi: pg_database, information_schema.tables y columns, y volcado de username/password.
2026.09.12
UNION-based SQLi: concatenación username||':'||password en una sola columna (PostgreSQL)
websqliunion-basedpostgresqlportswigger
Exfiltración de múltiples valores en una única columna string con UNION-based SQLi: concatenación || en PostgreSQL para volcar username y password de users.
2026.09.12
UNION-based SQLi en Oracle: enumeración de tablas vía all_tables y all_tab_columns
websqliunion-basedoracleportswigger
Enumeración de credenciales con UNION-based SQLi en Oracle: all_tables + all_tab_columns para descubrir la tabla USERS_DFPWCC y drenar el contenido con concatenación ||.
2026.09.12
UNION-based SQLi: enumeración de tablas y columnas vía information_schema (no-Oracle)
websqliunion-basedinformation-schemaportswigger
Enumeración completa del esquema con UNION-based SQLi en el filtro de categoría: information_schema.columns para descubrir la tabla users y extraer credenciales.
2026.09.12
UNION-based SQLi: fingerprinting de versión en MySQL/Microsoft con version()
websqliunion-basedmysqlmssqlportswigger
Fingerprinting del motor de base de datos en MySQL y Microsoft SQL Server mediante UNION-based SQLi en el filtro de categoría, usando la función version().
2026.09.12
UNION-based SQLi en Oracle: fingerprinting de versión vía v$version y banner
websqliunion-basedoracleportswigger
Fingerprinting de la versión de Oracle con UNION-based SQLi usando v$version: la vista de la instancia expone el banner del motor en la columna de salida.
2026.09.12
SQLi con WAF bypass vía XML encoding (hex entities): extracción de credenciales en stock check
websqliunion-basedwaf-bypassxmlportswigger
UNION-based SQLi detrás de un WAF: el filtro de stock parsea XML y un WAF bloquea palabras clave, pero la codificación en hexadecimal entities evita la detección.
2026.09.12
XXE→SSRF: robo de credenciales IAM desde el endpoint de metadata EC2 (169.254.169.254)
webxxessrfcloudawsmetadataportswigger
Cadena XXE→SSRF contra el endpoint de metadata de EC2: la entidad externa hace que el servidor consulte 169.254.169.254 y refleje las credenciales IAM en la respuesta.
2026.09.12
Blind XXE basado en errores: repurpose de DTD local (docbookx.dtd) para exfiltrar /etc/passwd
webxxeblind-xxeerror-basedportswigger
Exfiltración blind de /etc/passwd repurposando la DTD local /usr/share/yelp/dtd/docbookx.dtd: redefinición de la parameter entity ISOamso para forzar un error de ruta inexistente.
2026.09.12
XXE: lectura de archivos arbitrarios (/etc/passwd) vía entidad externa SYSTEM
webxxeportswigger
Intro clásico a XXE: entidad externa general con file:///etc/passwd inyectada en el cuerpo XML del Check stock, con el contenido reflejado en la respuesta.
2026.09.12
OOB XXE via external DTD: exfiltración de /etc/hostname con Burp Collaborator
webxxeblind-xxeoobexfiltrationportswigger
Exfiltración blind de /etc/hostname con XXE: DTD malicioso alojado en el exploit server y canal OOB hacia Burp Collaborator mediante parameter entities.
2026.09.12
CRTA Lab — Multi-Tier Active Directory Attack Chain (warfare.corp)
red-teamwindowsactive-directorywriteupcloud
Cadena de compromiso del dominio warfare.corp: command injection en web pública → credenciales en /etc/passwd y bookmarks de Firefox → pivote con ligolo-ng → dump LSA → compromiso del child DC → Golden Ticket con extra-SID sobre el dominio padre. Con guardrails de mitigación.
2026.09.12
CRTA Lab 2 — SSRF file:// → GTFOBins → DCSync (ent.corp)
red-teamwindowsactive-directorywriteupweb
Cadena de compromiso del dominio ent.corp: SSRF con file:// en Flask → credenciales en claro → SSH → escalada vía sudo vi (GTFOBins) → pivot desde Docker y logs → elFinder expuesto → sync_user con DCSync → Pass-the-Hash sobre el DC. Con guardrails de mitigación.
2026.07.31
Skills Assessment — JavaScript Deobfuscation / API Keys
webjavascriptdeobfuscationapi-keysosint
Deobfuscación de un packer 'p,a,c,k,e,d' para extraer una API key oculta: enumeración de JS, análisis de eval() obfuscado y replicación del flujo HTTP.
2026.07.17
Guess the Word — Minimax con Eliminación de Candidatos
algorithmsminimaxgame-theoryleetcode
Resolución del problema Guess the Word de LeetCode usando el algoritmo Minimax con poda de candidatos. Una demostración práctica de teoría de juegos aplicada a la búsqueda de palabras secretas.
2026.07.16
Concurrencia en Go — Building H2O (Admisión + Barrera Reutilizable)
thoughtsgoconcurrency
Análisis de ingeniería del problema Building H2O: semáforos por canal para control de admisión y barrera reutilizable con generaciones sobre sync.Cond. Trade-offs frente a WaitGroup y framework para sincronización de grupos en Go.