Skip to content
Web Security

Business Logic Vulnerabilities

Price manipulation, workflow bypass, and application logic flaws

Price Manipulation

Direct Parameter Modification

TEXT
# Original request
POST /checkout
{"item_id": 1, "quantity": 1, "price": 100.00}

# Manipulated
{"item_id": 1, "quantity": 1, "price": 0.01}
{"item_id": 1, "quantity": 1, "price": -100.00}
{"item_id": 1, "quantity": 1, "price": 0}

Hidden Form Fields

HTML
<!-- Original -->
<input type="hidden" name="price" value="99.99">

<!-- Modify to -->
<input type="hidden" name="price" value="0.01">

Currency Manipulation

TEXT
# Lower value currency
{"price": 100, "currency": "USD"}
→ {"price": 100, "currency": "JPY"}  # 100 JPY << 100 USD

Quantity Attacks

TEXT
# Negative quantity
{"quantity": -1}  # Refund?

# Decimal quantity
{"quantity": 0.001}

# Integer overflow
{"quantity": 99999999999}

Payment Bypass

Skip Payment Step

TEXT
# Normal flow
/cart → /checkout → /payment → /confirm

# Skip to
/confirm?order_id=123 (skip payment)
/order/complete

Race Condition in Payment

TEXT
# Multiple simultaneous requests
Thread 1: POST /checkout (item $100, balance $100)
Thread 2: POST /checkout (item $100, balance $100)
# Both succeed before balance updated

Gift Card/Credit Abuse

TEXT
# Apply negative amount
{"gift_card_amount": -50}  # Adds credit

# Reuse one-time code
Apply same code multiple times

# Apply to different orders
Same promotional credit across orders

Coupon/Discount Abuse

Code Manipulation

TEXT
# Case sensitivity
SAVE20 = save20?

# Stacking coupons
Apply multiple exclusive discounts

# Expired code reuse
Modify expiry validation client-side

Race Condition

TEXT
# Limited-use coupon
Simultaneous requests with same coupon
Both may succeed

Reference Manipulation

TEXT
# Referral codes
Use own referral on own account

# Affiliate codes
Apply self-referral discount

Workflow Bypass

Step Skipping

TEXT
# E-commerce
Cart → Address → Payment → Confirm
↓
Jump directly to Confirm

# Registration
Email verify → Complete profile
↓
Skip verification, access profile

State Manipulation

TEXT
# Order status
{"status": "pending"} → {"status": "shipped"}

# Subscription
{"plan": "free"} → {"plan": "premium"}

Process Replay

TEXT
# Replay successful transaction
Capture /process-payment response
Replay to complete new orders

Access Control Logic

Role Confusion

TEXT
# Mixed permissions
User is both "seller" and "buyer"
Create item as seller, buy as buyer with discount

Feature Flag Bypass

TEXT
# Hidden features enabled
?beta=true
?feature=premium
?debug=1

License/Subscription Bypass

TEXT
# Trial extension
Change trial end date
Modify subscription tier

# Unlimited trial
Keep creating new accounts

File Upload Logic

Size Limit Bypass

TEXT
# Chunked upload
Split large file into small chunks

# Compression
Upload compressed, decompress on server (zip bomb)

Type Validation Bypass

TEXT
# Content-Type manipulation
Upload .php with image/jpeg Content-Type

# Extension bypass
file.php.jpg
file.jpg.php
file.php%00.jpg

Count Limit Bypass

TEXT
# Max files limit
Race condition: Upload simultaneously
Overwrite existing: Same filename

E-commerce Specific

Cart Manipulation

TEXT
# Add item at wrong price
1. Add item at sale price
2. Wait for sale to end
3. Complete checkout at old price

Inventory Bypass

TEXT
# Out of stock items
Modify quantity parameter
Race condition during limited stock

# Reserved items
Access items reserved for others

Shipping Calculation

TEXT
# Free shipping threshold
Cart = $49, need $50 for free shipping
Add $1 item, get free shipping, cancel $1 item

Contest/Voting Logic

Vote Manipulation

TEXT
# Multiple votes
Session manipulation
Cookie change
IP rotation
Create multiple accounts

Timing Attacks

TEXT
# Submit after deadline
Modify timestamp
Race condition before close

API-Specific Logic

Field Injection

TEXT
# Add unexpected fields
POST /update-profile
{"name": "John", "role": "admin"}

# Mass assignment
Submit all user object fields

Type Confusion

TEXT
# String vs Integer
{"age": "25"} vs {"age": 25}

# Array vs String
{"id": "1"} vs {"id": ["1", "2"]}

Testing Methodology

Understand the Flow

TEXT
1. Map all application workflows
2. Identify each step's purpose
3. Find trust boundaries
4. Note where validation occurs

Test Points

TEXT
□ Remove/modify parameters
□ Skip workflow steps
□ Replay previous requests
□ Test boundary conditions
□ Race condition testing
□ Negative value testing
□ Type manipulation

Questions to Ask

TEXT
- What if I skip this step?
- What if I change this value?
- What if I do this twice?
- What if I use negative numbers?
- What assumptions does the app make?

Bug Bounty Tips

High-Value Targets

TEXT
- Payment processing
- Discount/coupon systems
- Subscription management
- Referral programs
- Credit/point systems
- Order processing
- Inventory management

Impact Demonstration

TEXT
1. Show financial impact
2. Calculate potential abuse scale
3. Demonstrate reproducibility
4. Show bypass of business rules

Documentation

TEXT
- Clear step-by-step reproduction
- Screenshot each step
- Show expected vs actual behavior
- Calculate business impact
On this page