Source: Bug Bounty Bootcamp by Vickie Li
Unlike injection vulnerabilities, logic errors and broken access control are triggered by perfectly valid HTTP requests. No illegal characters or malformed input are needed – the attacker simply uses the application in an unintended way.
Application logic errors (business logic vulnerabilities) exploit the legitimate flow of an application to cause unintended outcomes.
A three-step login (password → MFA code → security questions) may redirect users to step 3 after step 2, but not verify that step 2 was actually completed. An attacker can navigate directly to https://example.com/security_questions/ and skip MFA entirely.
An online shop verifies credit cards only when a new card is used. It determines whether a card is new by checking for the presence of a saved_card parameter. Submit saved_card=1 alongside a fake card number to bypass card verification and order items without payment:
POST /new_order item_id=123&quantity=1&saved_card=1&card_number=0000-0000-0000-0000
Admin panels may be hidden at obscure URLs but accessible without authentication:
https://example.com/YWRtaW4/admin.php (base64 of “admin”)https://example.com/wp-admin/admin.php (WordPress default)Common bypasses:
admin=1/dashboard.php) without going through the login stepIf a file parameter is passed directly to a file-read operation without sanitization:
http://example.com/upload?file=../../../../../etc/shadow
The ../ sequence escapes the uploads directory and traverses to the filesystem root. Target files: /etc/shadow (hashed passwords), config files, log files, source code.
Browse the application as a normal user. Read engineering blogs, documentation, and release notes. New features are often the least tested. Learn business rules: what actions should be allowed for which user roles?
Proxy all traffic. Note every request involved in:
For each request, identify parameters that control:
Try these common manipulations:
admin=1 or role=admin to cookies or parameters0 or 0.01/wp-admin/ or /admin/dashboard without logging in../ sequences in file parameters to read outside the intended directoryuser_id parameter to endpoints that normally identify users via session cookie