No Tools, Just Skill: How to Find XSS Vulnerabilities Manually

Cross-Site Scripting (XSS) is one of the most common and dangerous web vulnerabilities, often listed in the OWASP Top 10. While automated tools can help detect it, manual XSS testing gives you full control and deeper understanding. In this article, we’ll walk you through how to detect XSS manually—no automation needed.

What is Manual XSS Detection?

Manual XSS detection means identifying vulnerable inputs and testing them with custom payloads to see how the application behaves. This helps you bypass filters and uncover flaws that tools might miss.

What Users Usually Research While Detecting XSS Manually

When beginners or ethical hackers start learning manual XSS detection, they often dive into specific areas to understand the vulnerability better. Here’s a breakdown of what they typically research—and how to approach each point.

  1. Common XSS payloads
  2. How input is reflected or stored
  3. How to test forms, URLs, and search bars
  4. Context-based payload crafting
  5. Filter evasion and encoding tricks
  6. Real-world bug bounty writeups
  7. CSP and XSS protection headers

Read More: Nmap Cheat Sheet – Complete List of Commands for Network Scanning

Common XSS Payloads

Users want to learn what kind of payloads can trigger an alert or execute malicious scripts in the browser.

Example Payloads:

<script>alert(1)</script>
<img src=x onerror=alert(1)>
"><svg/onload=alert(1)>

Solution: Start with basic payloads and gradually explore obfuscated or encoded versions. Refer to community-driven lists like PayloadAllTheThings for a wide range of working examples.

How Input is Reflected or Stored

It helps determine whether the app is vulnerable to Reflected XSS (appears instantly in response) or Stored XSS (saved and triggered later).

How to test:

  • Input a unique string like xss_test_123 and check if it appears in the HTML response.
  • If yes, replace it with <script>alert(1)</script> and test again.

Solution: Use browser dev tools or intercept tools like Burp Suite to analyze where and how the input is reflected or stored.

How to Test Forms, URLs, and Search Bars

These are the most common places for user input, making them likely vectors for XSS.

How to test:

  • Inject scripts in form fields like login, comments, or search.
  • Try URL-based injections: https://example.com/search?q=<script>alert(1)</script>

Solution: Identify and test every possible input field or parameter in the application. Make sure to test both GET and POST methods.

Context-Based Payload Crafting

Payloads behave differently depending on where they are injected—in HTML, in a tag attribute, or inside a JavaScript block.

Context Examples:

  • HTML Context: <script>alert(1)</script>
  • Attribute Context: <img src=x onerror=alert(1)>
  • JavaScript Context: ';alert(1);//'

Solution: Use browser dev tools (Inspect Element or View Source) to determine context, then craft your payload accordingly.

Filter Evasion and Encoding Tricks

Modern applications often sanitize input. To bypass these filters, researchers look for creative evasion techniques.

Example Techniques:

<scr<script>ipt>alert(1)</scr</script>ipt>
&#x3C;script&#x3E;alert(1)&#x3C;/script&#x3E;

Solution:
Experiment with HTML entities, Unicode, broken tags, and event handlers. You can also refer to tools like XSS Polyglots for pre-crafted bypass payloads.

Real-World Bug Bounty Writeups

Learning from real incidents provides insight into how vulnerabilities are discovered and exploited in the wild.

Where to look:

  • HackerOne reports
  • Bugcrowd disclosures
  • GitHub writeups
  • PortSwigger blog posts

Solution: Study how attackers identified and bypassed protections. Focus on the logic behind their payloads and how they analyzed application behavior.

CSP and XSS Protection Headers

These headers help prevent XSS, and understanding them is critical for knowing whether your payload will execute.

Headers to Check:

  • Content-Security-Policy
  • X-XSS-Protection
  • X-Content-Type-Options

Solution: Use browser DevTools > Network tab > Response headers to inspect protections. If strict CSP is in place, try inline or event-driven payloads (like onerror in an <img> tag) to bypass it in test environments.

Step-by-Step Guide to Detect XSS Manually

Find Input Points

Look for places where user input is accepted:

  • Forms (login, signup, comments)
  • URL query strings (?q=)
  • Headers (User-Agent, Referer)

Inject Basic Payloads

Try injecting simple scripts like:

Read More: DNSSEC: How It Secures Your Website from Hackers

<script>alert(1)</script>
<img src=x onerror=alert(1)>
"><script>alert('XSS')</script>

Observe the Output

Did the alert pop up? Did the HTML break?
If yes, you’ve found a vulnerability.

Understand Contexts

Tailor your payload based on context:

  • HTML context: <b onmouseover=alert(1)>Hover me</b>
  • Attribute context: <img src=x onerror=alert(1)>
  • JavaScript context: 'alert(1)//

Try Filter Bypasses

If your input is sanitized, try:

<scr<script>ipt>alert(1)</scr</script>ipt>
&#x3C;script&#x3E;alert(1)&#x3C;/script&#x3E;

Test URL Parameters (Reflected XSS)

Try injecting in the URL like:

https://example.com/search?q=<script>alert(1)</script>

Use Browser Dev Tools

Inspect the source code to see how your payload is rendered.

Free Download: (PDF)

Get a printable, detailed XSS testing checklist with:

  • Payload categories
  • Bypass techniques
  • Context-specific injections
  • Headers to inspect
  • Resources to learn from
XSS Cheat Sheet-------Click here to download the PDF

Conclusion

Manually detecting XSS requires patience and practice, but it’s a critical skill for web developers, bug bounty hunters, and ethical hackers. Start small, build your understanding, and always test responsibly on authorized systems.

Sia
Written by Sia

Sia is the co-founder of Corenexis and one of the earliest voices shaping its editorial direction. With years of hands-on experience covering AI and technology, she has been writing about the digital world long before it became everyone's favorite topic — and she still does it better than most.

View all posts by Sia →