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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.