01/03/25
APIRaceConditionsiWireshark
Metodologia Tutorial | ApoorvCTF 2025
Thanks for sharing!
بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ

I know your browser history
Hola! És l'Omar. Benvingut de nou a un altre escrit. El primer que vull felicitar pel mes de Ramadà. Que Al·là accepti el nostre dejuni i oracions 🌙.
En aquest escrit abordarem alguns reptes relativament fàcils d'ApoorvCTF 2025, però amb el nostre procés de pensament al llarg del camí. Sempre vaig necessitar alguns escrits com aquest quan estava començant. Per tant, espero que això us sigui útil.
Hi haurà 3 tipus de reptes als quals passarem, un de senzill, un una mica tècnic i un que implica alguna cosa nova per a nosaltres. Comencem
Contingut
- CEO SEO - Web (directament)
- Blog-1 - Web (una mica tècnic)
- Ghosted el 14 - Diversos (Wireshark)
CEO de SEO
Primer repte, quan vaig visitar l'url vaig començar a fer clic als botons, buscant algunes funcionalitats.

No vaig trobar res dels botons, només eren alguns en blanc.
En aquestes situacions, si no hi ha funcionalitats directes, el propòsit podria ser una enumeració o un CVE per al programari antic utilitzat.
Vaig donar un cop d'ull a la font de la pàgina, però no hi ha gaire, els fitxers js tampoc tenien res útil per a nosaltres.
Com que normalment no es permet el forçament brut, vaig provar el primer camí que em va venir al cap,
robots.txt.
Una bandera falsa, després vaig anar pel segon camí que em va venir al cap,
sitemap.xml.
Hi havia aquest camí estrany:
goofyahhroute.
Com que va dir
it's a yes or no question yeah?, vaig afegir ?flag=yes a l'URL i vaig obtenir la bandera.apoorvctf{s30_1snT_0pt1onaL}
Prou fàcil? Passem al següent repte.
Bloc-1
Aquest és més tècnic.
Primer, quan vaig visitar l'URL, hi havia un formulari d'inici de sessió. Sembla que aquí serà algun tipus d'aplicació amb funcionalitats.
En aquestes situacions, només faig servir l'aplicació normalment per obtenir una visió a vista d'ocell de l'aplicació. Burp està treballant en segon pla per guardar la nostra història per a nosaltres més endavant.
També una altra cosa útil és escriure possibles vectors d'atac i idees quan s'explora l'aplicació.
Per exemple, aquí tenim una pàgina d'inici de sessió, així que vaig pensar que podria haver d'accedir a un compte d'administrador, pot tenir una injecció sql? Potser no perquè es tracta d'una aplicació NextJS i probablement immune a ella. (Podeu utilitzar una extensió com Wappalyzer per conèixer les tecnologies utilitzades a l'aplicació)
Em vaig registrar i vaig iniciar sessió, i hi havia la pàgina de publicacions del meu bloc

Podem afegir una publicació nova i tenim un botó
Daily Rewards.
Puc obtenir una recompensa diària si he escrit 5 publicacions, provem-ho.
Vaig afegir la primera publicació sense cap problema, però a la segona vaig rebre aquest avís: Només es permet un bloc al dia!
També hi havia la funcionalitat de comentaris, pot tenir alguna cosa a veure amb XSS per robar una galeta? Tot i això, aquesta funció no va funcionar, he rebut un error cada vegada que afegeixo un comentari
Això era molt de la interfície d'usuari, ara passem a Burp per a una mirada més profunda.

Des del primer cop d'ull a l'historial, podem veure les versions de l'API:
/api/v1 i /api/v2. Pot ser un problema de versions. Una versió antiga podria filtrar alguna cosa.A les sol·licituds ells mateixos tenien
Authorization amb el token jwt, de manera que podria ser un repte relacionat amb JWT. (Nota que estic escrivint tots els meus pensaments i idees)Vaig comprovar les sol·licituds i em vaig trobar amb aquesta:

En afegir una sol·licitud de bloc, passa un
date al cos, he intentat canviar-lo a l'endemà per veure si puc evitar el límit diari. Però no va funcionar.En aquest tipus de funcionalitats que tenen un límit, podeu provar Race Condition.
Fins ara tenim algunes notes i idees per provar:
- És una presa de control del compte d'administrador?
- Hi ha una injecció SQL?
- Hi ha un XSS als comentaris?
- És un repte relacionat amb JWT?
- Hi ha un problema de versions de l'API?
- Hi ha una condició de carrera?
Ara repassa'ls i prova diferents tècniques. Vaig anar amb la condició de carrera un al principi perquè sospitava d'aquesta funcionalitat
Daily Rewards. Que si puc saltar el límit, puc aconseguir la bandera.Vaig crear un compte nou i vaig enviar una sol·licitud per afegir una publicació. S'ha interceptat la sol·licitud en burp abans que vagi al servidor potencialment l'exploti mitjançant Race Condition.
Podem implementar Race Condition de moltes maneres, però he utilitzat la funció
tab group de Burp.Primer feu 5 còpies de la sol·licitud i, a continuació, feu clic a
+ -> Crete tab group
Trieu les 5 sol·licituds i feu clic a
createAra, al costat del botó
Send, feu clic a la fletxa avall i trieu l'última opció: Send group in parallel. Ara envia.Quan rebem la resposta notem
201 Created a totes les respostes, cosa que indica èxit. Tornant al lloc web, fes clic a Daily Rewards, obtenim un enllaç de youtube.
I..

És una broma de l'autor 🙂. Francament.. va ser inesperat 😆, és com si t'hagués enrotllat, però la versió Skibidi Toilet 😂😂
Tornant a la sol·licitud
Daily Rewards, observem que el seu punt final és /api/v2/gift. Canvieu-lo a /api/v1/gift (la versió antiga) i tenim la bandera!apoorvctf{s1gm@_s1gm@_b0y}
Allà vam tenir la sort que la primera tècnica que vam provar va funcionar. Però si no és així, tens les notes que has escrit, juga amb elles fins que ho entenguis.
Fantasma el dia 14
A continuació, parlem de quan trobeu alguna cosa nova de la qual no sabeu res. En aquest exemple, va ser wireshark per a mi. Tot el que sé és que és un esnifer de paquets.
En aquest repte em van donar un fitxer:
chall.pcap (Descarregueu aquí)El vaig obrir amb Wireshark

Vaig veure molts paquets, no sabia què fer amb ells, així que... vaig anar a google i vaig començar a familiaritzar-me amb ell. També vaig buscar altres reptes de CTF en què estava involucrat wireshark.
Alguns consells que vaig donar van ser filtrar els paquets, buscar sol·licituds HTTP, buscar text sense format i fins i tot revisar-los manualment.

Aquest és l'URL que vaig trobar quan vaig filtrar les sol·licituds HTTP:
172.200.32.81:8080. El vaig visitar però no vaig aconseguir res. Sense resposta.Vaig continuar recorrent-los manualment i finalment vaig trobar això:

És una mena de missatge d'algú anomenat
hawk1, esmentava la mateixa URL del lloc web que vaig visitar abans.A continuació, vaig filtrar pel text
hawk: tcp contains "hawk" i vaig trobar això:
4 coincidències i un d'ells va esmentar una supressió... així que vaig pensar a visitar Way Back Machine per veure si el puc trobar abans que s'eliminés.
I l'infern sí! Tenia raó

Va veure la font de la pàgina i va trobar una cadena codificada en base64:
YXBvb3JjdGZ7MW1fZzAxbmdfMW41YW4zfQ
El va descodificar i va obtenir la bandera:
apoorvctf{1m_g01ng_1n5an3}
I això és tot per aquest escrit. Espero que n'hagis après una o dues coses. Si teniu cap pregunta o necessiteu ajuda, no dubteu a posar-vos en contacte amb mi a Twitter.
Etiquetes:

