⚡ Shadow Academy
💉 Chapter 20

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āϕ⧀ āĻļāĻŋāĻ–āĻŦ⧇

⏱ āφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏāĻŽāϝāĻŧ: ā§§ā§Ģâ€“ā§¨ā§Ļ āĻŽāĻŋāύāĻŋāϟ ¡ āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ: āφāϗ⧇āϰ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž

ā§Ļ / ā§§ā§Ļā§Ļ āĻ…āĻ§ā§āϝāĻžā§ŸāϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“: āĻ…āĻ§ā§āϝāĻžāϝāĻŧ 21

āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻāχ browser-āĻ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

💉
SQL Injection — Database Hack āĻ•āϰ⧋
āχāύāĻĒ⧁āϟ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āϕ⧋āĻĄ āχāĻžā§āĻœā§‡āĻ•ā§āϟ āĻ•āϰ⧇ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ⧇āϰ āϏāĻ•āϞ āĻ—ā§‹āĻĒāĻ¨ā§€ā§ŸāϤāĻž āĻĢāĻžāρāϏ
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: SQL injection-āĻāϰ root cause āĻ“ query/data boundary āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧋āĨ¤
Defense checkpoint: Parameterized query, least-privilege DB user āĻ“ safe error handling āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
💉 āĻ—āĻ˛ā§āĻĒ ā§§: āĻ¸ā§āϕ⧁āϞ⧇āϰ āĻšāĻžāϜāĻŋāϰāĻž āĻ–āĻžāϤāĻžā§Ÿ āĻĻ⧁āĻˇā§āϟ⧁ āĻ›āĻžāĻ¤ā§āϰ⧇āϰ āύāĻžāĻŽ
āĻāĻ• āĻ¸ā§āϕ⧁āϞ⧇ āĻāĻ• āύāϤ⧁āύ āĻĻ⧁āĻˇā§āϟ⧁ āĻ›āĻžāĻ¤ā§āϰ āĻ­āĻ°ā§āϤāĻŋ āĻšāϞ⧋āĨ¤ āϤāĻžāϰ āύāĻžāĻŽ āϰāĻžāĻ–āĻž āĻšāϞ⧋: āϰāĻžāĻšā§āϞ'; DROP TABLE āĻ›āĻžāĻ¤ā§āϰāĻ›āĻžāĻ¤ā§āϰ⧀;--!

āĻļāĻŋāĻ•ā§āώāĻ• āϝāĻ–āύ āĻšāĻžāϜāĻŋāϰāĻž āĻ–āĻžāϤāĻžā§Ÿ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰāĻžāχāϜāĻĄ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻ•āϰāϤ⧇ āϗ⧇āϞ⧇āύ:
INSERT INTO āĻ›āĻžāĻ¤ā§āϰāĻ›āĻžāĻ¤ā§āϰ⧀ VALUES ('āϰāĻžāĻšā§āϞ'; DROP TABLE āĻ›āĻžāĻ¤ā§āϰāĻ›āĻžāĻ¤ā§āϰ⧀;--');

āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻ­āĻžāĻŦāϞ āϰāĻžāĻšā§āϞ āύāĻžāĻŽ āĻļ⧇āώ, āϤāĻžāϰāĻĒāϰ⧇āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻšāϞ⧋ āĻĒ⧁āϰ⧋ āĻŸā§‡āĻŦāĻŋāϞ āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰ⧇ āĻĻāĻžāĻ“!

āĻāϟāĻžāχ āĻšāϞ⧋ āĻŦāĻŋāĻ–ā§āϝāĻžāϤ SQL Injection (SQLi)! āϝāĻ–āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰ āχāωāϜāĻžāϰ⧇āϰ āĻĻ⧇āĻ“ā§ŸāĻž āχāύāĻĒ⧁āϟāϕ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āϕ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āφāĻ āĻž āĻĻāĻŋā§Ÿā§‡ āĻœā§‹ā§œāĻž āϞāĻžāĻ—āĻžā§Ÿ, āϤāĻ–āύ āĻšā§āϝāĻžāĻ•āĻžāϰ āχāύāĻĒ⧁āĻŸā§‡āϰ āϭ⧇āϤāϰ⧇āχ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĸ⧁āĻ•āĻŋā§Ÿā§‡ āĻĻā§‡ā§Ÿ!
🔓 āĻ—āĻ˛ā§āĻĒ ā§¨: āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻ›āĻžā§œāĻžāχ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āϞāĻ—āχāύ (' OR '1'='1)
āϞāĻ—āχāύ āĻĒ⧇āĻœā§‡ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ•ā§‹ā§Ÿā§‡āϰāĻŋ āĻĨāĻžāϕ⧇:
SELECT * FROM users WHERE email='$email' AND password='$password';

āϏ⧌āϰāĻ­ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄā§‡āϰ āĻŦāĻ•ā§āϏ⧇ āϞāĻŋāĻ–āϞ:
' OR '1'='1

āϤāĻžāĻšāϞ⧇ āĻĒ⧁āϰ⧋ āĻ•ā§‹ā§Ÿā§‡āϰāĻŋāϟāĻŋ āĻšā§Ÿā§‡ āĻĻāĻžāρ⧜āĻžāϞ:
SELECT * FROM users WHERE email='learner@example.test' AND password='' OR '1'='1';

āϝ⧇āĻšā§‡āϤ⧁ ā§§ āϏāĻŦāϏāĻŽā§Ÿ ā§§-āĻāϰ āϏāĻŽāĻžāύ (True), āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϭ⧁āϞ āĻšāĻ“ā§ŸāĻž āϏāĻ¤ā§āĻ¤ā§āĻŦ⧇āĻ“ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻĻāĻŋā§Ÿā§‡ āĻĻāĻŋāϞ True! āφāϰ āϏ⧌āϰāĻ­ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻ›āĻžā§œāĻžāχ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύ⧇āϞ⧇ āĻĸ⧁āϕ⧇ āĻĒ⧜āϞ!
📊 āĻ—āĻ˛ā§āĻĒ ā§Š: UNION SELECT āĻĻāĻŋā§Ÿā§‡ āĻŸā§‡āĻŦāĻŋāϞ āĻĄāĻžāĻŽā§āĻĒāĻŋāĻ‚
āϝāĻĻāĻŋ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āϏāĻžāĻ°ā§āϚ āĻŦāĻ•ā§āϏ⧇ SQLi āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ UNION SELECT āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āĻ…āĻ¨ā§āϝ āĻŸā§‡āĻŦāĻŋāϞ āĻĨ⧇āϕ⧇ āχāωāϜāĻžāϰāύ⧇āĻŽ āĻ“ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļ āϏāϰāĻžāϏāϰāĻŋ āϏāĻžāĻ°ā§āϚ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻŸā§‡āύ⧇ āĻāύ⧇ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰ⧇ āĻĢ⧇āϞāĻž āϝāĻžā§Ÿ!

āφāϰ āϝāĻĻāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āϕ⧋āύ⧋ āφāωāϟāĻĒ⧁āϟ āύāĻž āĻĻ⧇āĻ–āĻžā§Ÿ? āϤāĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ Boolean Blind (āĻšā§āϝāĻžāρ/āύāĻž āĻĒā§āϰāĻļā§āύ āĻ•āϰ⧇ āĻĄāĻžāϟāĻž āĻŦ⧇āϰ āĻ•āϰāĻž) āĻ…āĻĨāĻŦāĻž Time-based Blind (SLEEP(5) āĻĻāĻŋā§Ÿā§‡ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϰ⧇āϏāĻĒāĻ¨ā§āϏ ā§Ģ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϞ⧇āϟ āĻ•āϰāĻŋā§Ÿā§‡ āĻāĻ• āĻāĻ• āĻ…āĻ•ā§āώāϰ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž)!
đŸ›Ąī¸ āĻ—āĻ˛ā§āĻĒ ā§Ē: āϰāĻžāĻŽāĻŦāĻžāĻŖ āĻĒā§āϰāϤāĻŋāĻ•āĻžāϰ — Prepared Statements
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ āĻŦāϞāϞ⧇āύ, "āϏ⧌āϰāĻ­, āϕ⧋āĻĄ āĻ¸ā§āϝāĻžāύāĻŋāϟāĻžāχāĻœā§‡āĻļāύ⧇āϰ āϕ⧋āύ⧋ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ, āϝāĻĻāĻŋ āϤ⧁āĻŽāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāĻžāχāϜāĻĄ āĻ•ā§‹ā§Ÿā§‡āϰāĻŋ (Prepared Statements / PDO) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋āĨ¤"

āĻāĻ–āĻžāύ⧇ āϕ⧋āĻĄ āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āφāϞāĻžāĻĻāĻž āϰāĻžāĻ¸ā§āϤāĻžā§Ÿ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϝāĻžā§ŸāĨ¤ āχāωāϜāĻžāϰ āϝāϤ āĻŦ⧜āχ SQL āϕ⧋āĻĄ āϞāĻŋāϖ⧁āĻ• āύāĻž āϕ⧇āύ, āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϤāĻžāϕ⧇ āĻļ⧁āϧ⧁āχ āϏāĻžāϧāĻžāϰāĻŖ āĻŸā§‡āĻ•ā§āϏāϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—āĻŖā§āϝ āĻ•āϰ⧇, āĻ•āĻ–āύ⧋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ āϰāĻžāύ āĻ•āϰ⧇ āύāĻž!
💉 SQL Injection Interactive Sandbox
āĻ…āĻĨ⧇āĻ¨ā§āϟāĻŋāϕ⧇āĻļāύ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ SQL āĻĒ⧇-āϞ⧋āĻĄ āχāύāĻĒ⧁āϟ āĻĻāĻžāĻ“ — āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻĒāĻžāĻ°ā§āϏāĻŋāĻ‚ āĻ“ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻĻ⧇āĻ–ā§‹!
👆 āωāĻĒāϰ⧇ āχāύāĻĒ⧁āϟ āĻĻāĻŋā§Ÿā§‡ "āĻ˛ā§āϝāĻžāĻŦ āϚāĻžāϞ⧁ āĻ•āϰ⧋" āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧋...
đŸŽ¯ āĻ…āĻ§ā§āϝāĻžā§Ÿ 20 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ (ā§ŠāϟāĻŋ āĻĒā§āϰāĻļā§āύ)
āϏāĻ āĻŋāĻ• āωāĻ¤ā§āϤāϰ āĻŦ⧇āϛ⧇ āύāĻžāĻ“; āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻ¤ā§āϤāϰ⧇āϰ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻĒā§œā§‹āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 1: SQL injection āϏāĻžāϧāĻžāϰāĻŖāϤ āϕ⧇āύ āϘāĻŸā§‡?
❓ āĻĒā§āϰāĻļā§āύ 2: āĻĒā§āϰāϧāĻžāύ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āϕ⧀?
❓ āĻĒā§āϰāĻļā§āύ 3: Report-āĻ āϕ⧋āύ evidence āύāĻŋāϰāĻžāĻĒāĻĻ?

āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ reference

āφāϰāĻ“ āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ security standards āĻ“ guidance āĻĻ⧇āĻ–ā§‹; āĻĒā§āϰāϤāĻŋāϟāĻŋ lab āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻŦāĻž synthetic environment-āĻ āĻ•āϰ⧋āĨ¤

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸