All Practice Exams

100+ Free PWPP Practice Questions

Prepare for the TCM Security Practical Web Pentest Professional exam with instant access — no signup required.

✓ No registration✓ No credit card✓ No hidden fees✓ Start practicing immediately
100+ Questions
100% Free

Loading practice questions...

2026 Statistics

Key Facts: PWPP Exam

$499

Exam Cost

TCM Security

3 days

Assessment Window

TCM Security

2 days

Report Submission Deadline

TCM Security

1 free

Retake Included

TCM Security

16+ hours

Included Course Content

TCM Security

Non-expiring

Credential Validity

TCM Security

The PWPP is TCM Security's practical web pentest certification targeting intermediate-advanced practitioners. The 3-day hands-on exam tests real-world exploitation skills: NoSQL injection, SSRF (including cloud metadata), SSTI (Jinja2/Twig/Freemarker), race conditions via Turbo Intruder, OAuth/JWT attack chains, mass assignment, WAF bypass, and vulnerability chaining. A professionally written report must be submitted within 2 days after the assessment. Cost is $499 including one free retake and 12 months of access to Practical Web Hacking and Practical API Hacking courses. No flags, no multiple-choice — pure real-world engagement.

Sample PWPP Practice Questions

Try these sample questions to test your PWPP exam readiness. Each question includes a detailed explanation. Start the interactive quiz above for the full 100+ question experience with AI tutoring.

1A web application uses MongoDB and constructs a login query as `db.users.find({username: req.body.username, password: req.body.password})`. An attacker submits `{"username": "admin", "password": {"$ne": null}}`. What type of attack is this?
A.NoSQL injection using MongoDB operator injection
B.SQL injection using UNION-based technique
C.LDAP injection exploiting DN metacharacters
D.XML injection targeting XPATH queries
Explanation: This is a NoSQL injection attack exploiting MongoDB's operator syntax. By submitting `{"$ne": null}` as the password value, the attacker injects a comparison operator that evaluates to true for any non-null stored password, bypassing authentication without knowing the actual credential. MongoDB operators like `$ne`, `$gt`, `$regex`, and `$where` can be injected when input is not sanitized before being used in query construction.
2When testing a MongoDB application for NoSQL injection, which of the following payloads injected in a URL parameter is most likely to cause an authentication bypass via operator injection?
A.' OR '1'='1
B.admin'--
C.[$ne]=invalid
D.1; DROP TABLE users--
Explanation: The `[$ne]=invalid` payload exploits how PHP and some frameworks parse array-style query parameters, converting them to `{"field": {"$ne": "invalid"}}` in MongoDB queries. This injects the `$ne` (not equal) operator, making the condition true when the field value differs from 'invalid' — which almost always succeeds, bypassing authentication. This is a classic GET-parameter NoSQL injection technique.
3An application endpoint processes JSON and is vulnerable to NoSQL injection. To extract data character-by-character from a MongoDB field using blind injection, which operator would an attacker use?
A.$where with JavaScript sleep for time-based inference
B.$text for full-text search index abuse
C.$regex to test field values matching partial patterns
D.$lookup to join across collections and extract data
Explanation: The `$regex` operator enables blind NoSQL injection by testing whether a field matches a partial pattern. An attacker can submit payloads like `{"password": {"$regex": "^a"}}` and enumerate characters one-by-one based on whether the response differs (e.g., user found vs. not found). This boolean-based blind extraction works similarly to blind SQL injection but uses MongoDB's native regex matching.
4A banking application transfers funds through a POST endpoint. Two simultaneous requests are sent to transfer the same $500 balance to different accounts. Both requests read the balance as $500 and proceed. This results in $1000 being transferred despite only $500 existing. What vulnerability class is this?
A.Race condition / TOCTOU vulnerability
B.Insecure Direct Object Reference (IDOR)
C.Mass assignment via unfiltered parameters
D.Business logic flaw via parameter tampering
Explanation: This is a race condition (Time-of-Check to Time-of-Use / TOCTOU) vulnerability. Both requests check the balance at the same moment (time-of-check), both see $500 available, and both proceed to debit (time-of-use) before either write completes. Proper mitigations include database-level transactions with locks, optimistic/pessimistic locking, or atomic compare-and-swap operations to prevent concurrent reads before a write commits.
5Which Burp Suite feature is specifically designed to send multiple identical or crafted HTTP requests simultaneously to exploit race conditions?
A.Repeater with multiple tabs synchronized
B.Intruder with Pitchfork attack type
C.Turbo Intruder with race-condition script
D.Scanner with active race-condition check
Explanation: Turbo Intruder is a Burp Suite extension purpose-built for sending large numbers of HTTP requests with precise timing control. Its race-condition example scripts use HTTP/2 single-packet attacks or carefully timed HTTP/1.1 last-byte synchronization to deliver multiple requests within the same server processing window — maximally exploiting TOCTOU race conditions. The `race-single-packet-attack.py` template is designed specifically for this scenario.
6An application uses a single-use discount coupon system. After redeeming a coupon, the server marks it as used in the database. A tester submits 20 redemption requests simultaneously using Turbo Intruder. The coupon is applied 3 times before the 'used' flag is set. Which technique most effectively prevents this?
A.Rate limiting the redemption endpoint to 1 request per second
B.Implementing client-side validation before server processing
C.Using a database-level unique constraint and atomic upsert on coupon redemption
D.Adding a CAPTCHA to the redemption form
Explanation: A database-level unique constraint combined with an atomic operation (such as an `INSERT ... WHERE NOT EXISTS` or `UPDATE ... WHERE used=false RETURNING id`) ensures that only one redemption can succeed even under concurrent load. The database enforces mutual exclusion at the storage layer, preventing the TOCTOU window that exists in application-level check-then-act logic. Rate limiting and CAPTCHAs can be bypassed or circumvented and don't address the root atomic operation requirement.
7A REST API uses a Node.js/Express framework and automatically binds all JSON body parameters directly to a Mongoose model: `User.create(req.body)`. An attacker sends `{"username": "attacker", "email": "a@b.com", "isAdmin": true}`. The `isAdmin` field is silently set. What vulnerability is this?
A.Insecure Deserialization via JSON payload
B.Prototype Pollution via __proto__ injection
C.Mass Assignment vulnerability
D.Broken Object Level Authorization
Explanation: Mass Assignment occurs when an application automatically binds user-controlled input to model properties without filtering which fields are allowed. By sending `isAdmin: true` in the request body, the attacker elevates their own privileges because the ORM maps all submitted fields to the model. The fix is to use allowlist-based parameter filtering (e.g., Mongoose's `select`, Express-validator field whitelisting, or explicit property assignment) to only permit safe fields.
8During API testing, you discover a PUT /api/users/profile endpoint that accepts JSON. The API documentation only mentions `name`, `email`, and `bio` fields. Which Burp Suite technique best helps identify hidden mass-assignable parameters?
A.Send the request to Repeater and manually add common field names like role, admin, isVerified
B.Use Intruder Sniper mode with a wordlist of common parameter names to fuzz the JSON body
C.Enable Burp Scanner passive checks on the endpoint response
D.Use the Param Miner extension to discover undocumented parameters via response comparison
Explanation: Param Miner is a Burp Suite extension specifically designed to discover hidden, undocumented, or unused parameters that an application accepts but doesn't advertise. It performs intelligent guessing and response-difference analysis to identify parameters that affect server behavior. For mass-assignment testing, Param Miner can uncover backend model fields not exposed in the API documentation by detecting response changes when unknown fields are submitted.
9A web application fetches a URL specified by the user: `fetch(req.body.url)`. An attacker submits `http://169.254.169.254/latest/meta-data/iam/security-credentials/`. The server returns AWS IAM credentials. What is this attack?
A.Server-Side Request Forgery (SSRF) targeting cloud metadata
B.Open Redirect to internal metadata service
C.XML External Entity (XXE) injection via URL parameter
D.Remote File Inclusion (RFI) exploiting the URL loader
Explanation: This is Server-Side Request Forgery (SSRF). The server-side fetch makes an HTTP request on behalf of the attacker to the AWS Instance Metadata Service (IMDS) at the link-local address 169.254.169.254. This service is only accessible from within the EC2 instance, so the server's internal network position is abused to retrieve IAM role credentials — which can then be used to access AWS resources. Mitigations include IMDSv2 (requiring token-based session), allowlisting permitted URL destinations, and blocking link-local ranges.
10An SSRF filter blocks requests to `169.254.169.254`. Which bypass technique most likely succeeds against a naive blocklist implementation?
A.Encoding the IP as `%31%36%39%2E%32%35%34%2E%31%36%39%2E%32%35%34` (URL encoding)
B.Appending a port number: `169.254.169.254:80`
C.Using the decimal representation `2852039166` or IPv6 equivalent `::ffff:169.254.169.254`
D.Adding a path traversal: `169.254.169.254/../../etc/passwd`
Explanation: Blocklists that check for the literal string `169.254.169.254` can be bypassed using alternative IP representations: the decimal integer `2852039166` is mathematically equivalent and resolves to the same IP. IPv6 notation `::ffff:169.254.169.254` (IPv4-mapped IPv6 address) also resolves to the same link-local destination but is a different string. Both bypass string-matching blocklists. Proper SSRF mitigations use allowlists, resolve hostnames server-side and re-check after DNS resolution, and block link-local ranges at the network layer.

About the PWPP Exam

The PWPP (Practical Web Pentest Professional) is TCM Security's intermediate-to-advanced hands-on web application penetration testing certification. Unlike multiple-choice exams, the PWPP is a real-world practical engagement: you have 3 days to exploit advanced web vulnerabilities in a lab environment and 2 additional days to deliver a professional penetration test report. This practice test covers the theoretical knowledge behind advanced techniques: NoSQL injection, race conditions, SSRF, SSTI, OAuth/JWT attack chains, WAF bypass, and vulnerability chaining.

Assessment

Performance-based assessment

Time Limit

3 days assessment + 2 days reporting

Passing Score

Successful exploitation + professional report

Exam Fee

$499 (TCM Security)

PWPP Exam Content Outline

20%

Advanced OWASP Exploitation

Advanced OWASP Top 10 exploitation including second-order SQL injection, DOM-based XSS, business logic flaws, and vulnerability chaining for amplified business impact

15%

Injection Attacks (NoSQL, SSTI, XXE)

NoSQL injection via MongoDB operator injection and $regex blind extraction; SSTI across Jinja2, Twig, Freemarker, and Handlebars with RCE chains; XXE with out-of-band exfiltration

15%

Server-Side Request Forgery (SSRF)

Standard, blind, and cloud-metadata SSRF; DNS rebinding; headless browser SSRF via PDF generators; SSRF filter bypass via IP encoding, URL parsing tricks, and IPv6 notation

20%

Authentication & API Attacks

OAuth 2.0 attack chains (redirect_uri, PKCE, implicit flow, state CSRF); JWT attacks (algorithm confusion, kid injection, JKU/JWK injection, embedded JWK); BOLA/BFLA per OWASP API Top 10 2023

10%

Race Conditions & Business Logic

TOCTOU race conditions via Burp Turbo Intruder single-packet attacks; atomic operation requirements; business logic flaw identification and exploitation methodology

10%

WAF Bypass & Filter Evasion

Comment-based SQL obfuscation, event-handler XSS bypasses, HTTP Parameter Pollution, Content-Type switching, URL/Unicode encoding bypass, and CSP nonce bypass techniques

5%

Advanced Burp Suite Usage

Turbo Intruder race condition scripting, Param Miner for hidden parameter discovery, Active Scan++ for SSTI/SSRF, DOM Invader for DOM XSS, jwt_tool playbook scanning

5%

Vulnerability Chaining & Professional Reporting

Chaining findings for amplified impact, CVSS v3.1 scoring accuracy, professional pentest report structure, PoC documentation, and critical-finding escalation protocols

How to Pass the PWPP Exam

What You Need to Know

  • Passing score: Successful exploitation + professional report
  • Assessment: Performance-based assessment
  • Time limit: 3 days assessment + 2 days reporting
  • Exam fee: $499

Keys to Passing

  • Work through all 100 available questions
  • Review every answer and explanation
  • Track weak areas and revisit them
  • Use our AI tutor for tough concepts

PWPP Study Tips from Top Performers

1Complete the Practical Web Hacking and Practical API Hacking courses included with the exam — they cover exactly what is tested
2Master Burp Suite tools: Turbo Intruder for race conditions, Param Miner for hidden parameters, and DOM Invader for DOM XSS
3Practice NoSQL injection against MongoDB using the $ne, $regex, and $where operators in local lab environments
4Learn SSTI fingerprinting payloads for each engine (Jinja2, Twig, Freemarker, Handlebars) and their RCE chains
5Understand OAuth 2.0 and JWT attack classes: algorithm confusion, kid injection, JKU/JWK header injection, and state CSRF
6Practice exploiting race conditions with Turbo Intruder's race-single-packet-attack.py template
7Build a SSRF testing methodology covering standard SSRF, blind SSRF with Burp Collaborator, and cloud metadata endpoints
8Develop WAF bypass instincts: always test alternative payload representations (encoding, case, comments, HPP)
9Practice vulnerability chaining — document how combining two medium findings creates a critical finding
10Write mock pentest reports from your lab sessions to practice professional documentation before the exam

Frequently Asked Questions

What is the PWPP exam format?

The PWPP is a hands-on practical web application penetration test. You have 3 full days to exploit vulnerabilities in a lab environment and 2 additional days to write and submit a professional penetration test report. There are no flags, no multiple-choice questions, and no gotchas — the exam mirrors real-world pentest engagements with vulnerabilities that require knowledge, methodology, and troubleshooting to find and exploit.

What vulnerabilities are tested in the PWPP?

The PWPP covers advanced web vulnerabilities: NoSQL injection (MongoDB operator injection, blind $regex extraction), race conditions and TOCTOU vulnerabilities, mass assignment and parameter pollution, Server-Side Request Forgery (SSRF) including cloud metadata exploitation, Server-Side Template Injection (SSTI) in various template engines, OAuth 2.0 and JWT attack chains, advanced Burp Suite usage (Turbo Intruder, Param Miner), WAF bypass techniques, and vulnerability chaining to demonstrate amplified business impact.

What courses prepare for the PWPP?

TCM Security's Practical Web Hacking (10 hours) and Practical API Hacking (6 hours) courses are included with the PWPP exam purchase and contain all information required to pass. Both courses provide hands-on labs. Additional preparation resources include PortSwigger Web Security Academy (practitioner-level labs), real-world bug bounty practice, and review of the OWASP Testing Guide and OWASP API Security Top 10.

How hard is the PWPP compared to the PWPA?

The PWPP is significantly harder than the associate-level PWPA. While PWPA tests OWASP Top 10 fundamentals and basic Burp Suite usage, PWPP requires exploitation of more advanced vulnerabilities that scanners typically miss: NoSQL injection, race conditions, SSTI, advanced OAuth/JWT attacks, and WAF bypass techniques. Candidates should have the PWPA or equivalent practical experience before attempting the PWPP.

What does a professional PWPP report include?

A passing PWPP report should include: an executive summary, methodology overview, findings with CVSS v3.1 scores and CWE IDs, proof-of-concept screenshots and payloads, business impact descriptions for each finding, vulnerability chaining documentation where applicable, and remediation recommendations. TCM Security evaluates both the technical findings discovered and the quality of the written report — both are assessed.

Is this practice test like the real PWPP exam?

No — this is a multiple-choice knowledge-preparation test. The real PWPP is a hands-on practical exam where you must actually exploit web application vulnerabilities in a lab environment. This practice test helps you learn the concepts, tools, attack techniques, and methodology. To pass PWPP, you must practice hands-on exploitation: complete the included courses, work through PortSwigger labs, practice API hacking, and develop your own Burp Suite workflow.