21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
Capture The Flag challenge solving — reverse engineering, steganography, forensics, crypto, web exploitation, binary exploitation, OSINT. Pattern recipes for fast triage and direct exploitation.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A pattern catalog for Capture The Flag challenges — reverse engineering, steganography, forensics, cryptography, web exploitation, OSINT, and blockchain. Each section is a recipe: detect the pattern, apply the technique, recover the flag.
Always check the flag format first. Common formats:
SiberVatan{...}, SIBERVATAN{...}, sibervatan{...}CTF{...}, flag{...}, FLAG{...}Grep is your first tool: grep -roP '[A-Za-z]*[Vv]atan?{[^}]+}' ./
For YARA rules or math-based reverse engineering problems:
((byte[i] OP1 val1) OP2 val2) == result(x + a) ^ b == c → x = (c ^ b) - a(x - a) ^ b == c → x = (c ^ b) + a(x ^ a) + b == c → x = (c - b) ^ aFor PNG/images with hidden data:
identify -verbose image.png | grep -i flagxxd image.png | tailbits = [pixel[ch] & 1 for row in arr for pixel in row]
bytes_arr = bytes(sum(bits[i+j] << (7-j) for j in range(8)) for i in range(0, len(bits)-7, 8))
text = bytes_arr.decode('latin-1')
For brute-force style problems:
itertools.product(string.ascii_lowercase, repeat=4)hashlib.md5(token.encode()).digest() (binary) not .hexdigest() for stage chainingAuto-detect common encodings:
[A-Za-z0-9+/=], length is multiple of 4[0-9a-fA-F\s], decode with bytes.fromhex()[01\s]68 97 121-LMinecraft-themed or quest-based web games with resource gathering and multiple stages:
Game Flow:
/overworld.php with action name/flag.php is the ultimate target, returns 302 if game incompleteCRITICAL: URL distinction
/ (index.php) with oyuncu_adi + captcha_cevap/overworld.php — this is where ALL game actions happen/overworld.php, NOT back to // triggers a re-login with captcha check, breaking the session flowallow_redirects=True or follow the Location headerResource gathering:
for _ in range(5):
s.post(OVERWORLD_URL, data={"odun_topla": "1"}) # NOT base URL!
Stage tracking:
disabled class until requirements metodun_topla, tas_topla, demir_topla, elmas_topla, obsidyen_topla, nether_portalSpecial password format discovery:
pattern attribute: ^!Y[a-z]{6}r\d{3}$!Y + 6 lowercase letters + r + 3 digits!Ymadenir000Stage advancement:
s.post(OW, data={"elmas_sifre": "!Ymadenir000", "elmas_topla": "1"}) # 10 elmas
s.post(OW, data={"obsidyen_topla": "1"}) # 10 obsidyen
s.post(OW, data={"nether_portal": "1"}) # to Nether
CTF web challenges sometimes use SVG-based pixel art captchas (e.g., Minecraft-style block font). Each number is an inline <img> with a data:image/svg+xml;base64,... source.
Recognition technique:
src attributefill="#f0f0f0" (white pixel) path elementsMx y Hw Vh Z defines a filled rectangle — these are the visible pixels+ = 2 rectangles (horizontal + vertical), - or × = otherWhen recognition fails: Brute-force all 100-200 arithmetic combinations (0-9, + - *). Each wrong answer returns an error message — session persists so you can retry quickly.
HTML elements with style="display: none;" or hidden attributes often contain base64-encoded URLs or clues. CSS comments (/* ... */) are also common hiding spots. Always scan both — across ALL pages and ALL static assets (CSS, JS, PHP, HTML):
curl -s "URL" | grep -oP '[A-Za-z0-9+/]{30,}={0,2}'
# Then decode each:
echo "BASE64_STRING" | base64 -d 2>/dev/null
Key locations to scan: index page, login page, admin page, every JS file, every CSS file. Do NOT stop after one page — the chain may span multiple.
Check /robots.txt first — Disallow directives reveal hidden endpoints (/admin.php, /login.php). Always check these discovered paths immediately.
Modern CTF web apps use JavaScript fetch() instead of HTML form submits, making direct form POST fail (404).
/js/app.js or inline <script> tags for fetch() calls — the actual endpoint is typically /api/login, /api/register, etc.application/json, not form-urlencodedJSON.stringify({username, password, captcha})/api/captcha (returns JSON {"question":"123 + 456"})onclick attribute on the submit button may show an alert but the backend endpoint still works when hit directly/api/profile) shows isAdmin field — target this for privilege escalation/api/profile with PATCH, JSON {"email":"..."}) may be vulnerable to NoSQL injectionFor challenges running Express.js (x-powered-by: Express) with MongoDB:
Profile escalation pattern: PATCH endpoints often use $set: req.body — extra fields pass through:
{"email": "test@test.com", "isAdmin": true}
Other fields to try: "role", "is_admin", "user_level", "permissions", "__v", "admin".
Login/Register NoSQL injection:
{"username": {"$gt": ""}, "password": {"$gt": ""}} — but may be blocked by input validation{"username":"x","password":"Test1234!","isAdmin":true} — backend may silently ignore unknown fieldsMongoDB regex/$where rejection: Backend email validation will reject object-type values for email. Stick to flat JSON field injection.
When a 2FA verification page is encountered:
/otp.php endpoint (old deployment artifact — look for <!-- TODO: remove debug before production --> comments in HTML)PHPSESSID), accessing /otp.php returns a debug response header x-debug-otp containing MD5 hash of the OTPimport hashlib
target = "hash_from_x-debug-otp"
for i in range(1000000):
if hashlib.md5(f"{i:06d}".encode()).hexdigest() == target:
print(f"OTP: {i:06d}")
verify_action.php via POST: otp=312888Cookie is key: /otp.php requires an active session. Without cookies, it 302-redirects to login. With cookies, it returns the debug header AND the 2FA page simultaneously.
Some admin panels check Origin header for CSRF-like protection. Send Origin: https://same-domain.zone with the POST to bypass:
curl -s -X POST "https://site/admin.php" \
-H "Origin: https://site.hacker.zone" \
-d "action=get_secret_recipe" \
-L # follow redirect
This works when the server uses same-origin checks but doesn't validate sessions. Without the header, the server 302-redirects to login. With it, the POST succeeds and returns the protected content.
Hidden base64 YouTube links can appear in MULTIPLE locations across the same site:
index.html in <h3 style="display:none"> elementslogin.php) in <p style="display:none"> elementsstyle.css) in /* CSS comments */Workflow:
pp query parameter contains a base64 search termOrigin: <same-domain> headerfrom Crypto.Cipher import AES
import base64
key = b"your_32_byte_key_here" # 32 bytes for AES-256
iv = b"1234567890123456" # 16 bytes IV
enc = base64.b64decode("base64_ciphertext")
cipher = AES.new(key, AES.MODE_CBC, iv)
dec = cipher.decrypt(enc)
pad = dec[-1]
flag = dec[:-pad].decode('utf-8')
Multiple hidden base64 strings across DIFFERENT pages form a chain that must be traversed sequentially:
<tag style="display:none">base64</tag> → decodes to YouTube link/* CSS comment with base64 */ → third YouTube link (often a Shorts video)The search terms in the YouTube URLs (pp parameter, base64-decoded) correlate to the page's context/login credentials. Eventually, one of the accessed pages' HTML comments reveals an AES encryption key and IV.
Always scan ALL pages and ALL static assets in sequence — don't stop at the first find.
Always check static assets (style.css, app.js, main.js) for:
/* ... */ containing base64 data, URLs, or credentials// TODO, /* TODO */ with debug endpoints, keys, or credentials.flag-box, .flag-container)When login forms are disabled client-side (onclick="alert('bakımda')"):
X-Forwarded-For: 127.0.0.1)For challenges involving blockchain transactions (BNB Chain, Ethereum, etc.):
When explorer sites are bot-blocked:
browser_navigate with user-agent spoofingexplorer.bnbchain.org, debank.com, oklink.comcurl -s -X POST "https://bsc-dataseed.binance.org/" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xADDRESS","latest"],"id":1}'
Response 0x3 = 3 transactions (nonces 0, 1, 2)Transaction search via RPC (when tx hash unknown):
eth_getBlockByNumber with "latest" returns recent block's tx listfrom/to addresses in each transaction to find target walletTransaction input data decoding:
tx.input field — common hiding spot for flags/messages0x prefix and decode as ASCII:
bytes.fromhex(tx_input[2:]).decode('utf-8', errors='replace')
Radio-based CTF challenges involving .wav audio files that decode to images:
Detection indicators:
Challenges with decoding:
qsstv and fldigi are the standard tools but BOTH require a GUI/displaypysstv (Python) is encode-only — no decode supportFallback strategies:
qsstv with Xvfb (virtual framebuffer): xvfb-run qsstvFor people/organization research:
Try multiple search engines: Google blocks automated queries (bot detection CAPTCHA). Fallback options:
Social media research:
site:linkedin.com/in "Name"When browser search is blocked:
curl with proper User-Agent headers (Mozilla/5.0 ...)webcache.googleusercontent.com/search?q=cache:URLFlag location patterns:
When all search fails:
SiberVatan{150}, SiberVatan{kisi_adi}, SiberVatan{sayisal_deger}For medium-complexity challenges (multi-step crypto, coded reverse, chained pattern search) delegate to a sub-agent:
fetih -p "challenge description and files to analyze"
Print mode (-p) is non-interactive and exits when done. Useful when the parent agent wants to fan out file-system grep / search / pattern-matching work without polluting its own context.
For hard problems where 3+ direct attempts failed (complex cryptography, binary exploitation / ROP chains, advanced reverse engineering), escalate to an external LLM (e.g. claude -p "..."). Treat the third failed flag submission as a hard pivot trigger: switch attack vector, switch tool chain, or hand off to a different model with a fresh context — do not keep banging on the same approach.
~/Desktop/<competition>/flag.txt in the directorySIBERVATAN{} vs SiberVatan{}).digest()) enters stage 2, not the hex string. Order matters!sys.call_tracing or base64-encoded exec/flag.php) only accessible after completing all game stages. Don't waste time trying to find the flag in challenge pages — progress the game.index.php (root), but the game page is at /overworld.php (a 302 redirect target). If you keep hitting the login page, check your redirect handling. Resource-gathering POSTs go to /overworld.php, NOT the root URL. If you POST a resource action to the root, the server treats it as a new login attempt and asks for captcha again.+, *). Session cookies MUST persist across attempts.!Y + 6 lowercase letters + r + 3 digits. Common Turkish 6-letter words work: "madeni" (mineshaft) → !Ymadenir000. Try relevant Minecraft-themed words first.powNonce, powSolution, powSig, powExpires, powDifficulty. These indicate JavaScript-generated PoW.\n\nWorkflow:\n1. Fetch the PoW challenge from the API:\n python\n ch = s.get(f\"{BASE}/api/pow/challenge\").json()\n # Returns: {nonce, sig, expires, difficulty}\n \n2. Solve SHA-256 hash puzzle:\n python\n import hashlib\n prefix = '0' * ch['difficulty'] # e.g., \"0000\" for difficulty=4\n n = 0\n while True:\n h = hashlib.sha256(f\"{ch['nonce']}{n}\".encode()).hexdigest()\n if h.startswith(prefix): break\n n += 1\n \n3. Submit with all PoW fields in the POST:\n python\n s.post(url, data={\n \"username\": \"...\",\n \"password\": \"...\",\n \"powNonce\": ch['nonce'],\n \"powSolution\": str(n),\n \"powSig\": ch['sig'],\n \"powExpires\": ch['expires'],\n \"powDifficulty\": str(ch['difficulty'])\n })\n \n\nPoW difficulty estimation: difficulty=4 (~50K hashes, <1s), difficulty=5 (~500K, ~5s), difficulty=6 (~5M, ~30s).\n\nPitfalls:\n- PoW is needed for BOTH register AND login — each requires its own fresh challenge\n- The PoW API endpoint is /api/pow/challenge — NOT on the HTML page\n- Hidden input value attributes are EMPTY in HTML; they're filled by JS after PoW solves\n- The sig field comes from the API, NOT computed client-side\n\n#### NPort 5110 / IoT Device Default Credentials\n\nWhen encountering an "Akıllı Ev Sistemi" (Smart Home System) or any page mentioning "NPort 5110" or "Moxa":\n1. Check the HTML meta tags — NPort 5110 Web Console is a dead giveaway\n2. Look for the user:user credential hint — often displayed in an alert or secondary text\n3. The captcha is a simple inline SVG math problem (e.g., <text>5 + 6 = ?</text>) — parse directly\n4. Default credentials: user:user with random arithmetic captcha\n5. After login, you get an IoT device management dashboard with:\n - Device list (lamps, AC, TV, etc.)\n - REST API: POST /api/v1/device/status/control with JSON body {\"device_id\": X, \"status\": \"on/off\"}\n - Device add/delete via ?delete=X parameter\n\nVulnerability exploitation:\n- ?delete=X parameter may be SQL injectable — test with ?delete=1 AND 1=1 vs ?delete=1 AND 1=2 (boolean-based blind SQLi)\n- API endpoint expects proper JSON — passing raw text returns "Cihaz bulunamadı"\n- SQL injection may return 500 errors due to syntax — adjust comment syntax (-- , #, /*)\n\n### Reference Walkthroughs (in skill directory)references/yavuzkraft-walkthrough.md — Minecraft-themed web game with SVG captcha, resource gathering, multi-stage portal navigationreferences/kulaktan-kulaga-walkthrough.md — Chained YouTube puzzle with hidden base64, AES-256-CBC decryption, Origin header bypassreferences/yara-reverse-engineering.md — YARA rule reverse engineering: byte-by-byte math unrollingreferences/ghostknock-apk-analysis.md — Android APK reverse with native .so library JNI callsreferences/trust-the-code-walkthrough.md — OTP/2FA bypass via debug endpoint and MD5 hash crackingreferences/sewer-pollutants-walkthrough.md — NoSQL injection in Express.js + MongoDB, mass assignment for privilege escalationreferences/0xsimsar-blockchain-analysis.md — BNB Chain transaction analysis via public RPCreferences/hash-cracking-pipeline.md — 2-stage hashing pipeline brute-forcereferences/ying-yang-pcap-analysis.md — PCAP HTTP body extraction, trap message chains, base64 decodingまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
AES CBC/ECB modlarına karşı kriptografik bütünlük saldırıları — bit flipping, IV manipulation, ECB cut-and-paste, CBC-MAC length extension, IV reuse
日本語の概要は準備中です。原文の説明を表示しています。
AES-GCM ve ChaCha20-Poly1305 nonce yeniden kullanımı saldırısı — GF(2^128) polinom kök bulma ile Hash Key kurtarma ve MAC sahteciliği.
日本語の概要は準備中です。原文の説明を表示しています。
tespit etmeabnormal access patterns in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics. Identifies after-hours bulk downloads, access from new IP addresses, unusual API calls (GetObject spikes), and potential data exfiltration using statistical baselines and time-series anomaly Tespit.
日本語の概要は準備中です。原文の説明を表示しています。
Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to tespit etmereentrancy, integer overflow, access control, and other vulnerability classes before Dağıt:ment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
Parses Kubernetes API server audit logs (JSON lines) to tespit etmeexec-into-pod, secret access, RBAC modifications, privileged pod creation, and anonymous API access. Builds threat Tespit rules from audit event patterns. Use investigating yaparken Kubernetes cluster compromise or building k8s-specific SIEM Tespit rules.
日本語の概要は準備中です。原文の説明を表示しています。