FreeFungi

The full counter

A pick ’n’ mix of web app vulnerabilities

Fifteen ways into a sweet shop, laid out as an attack path that runs from easy to hard. Follow the route to learn, or dive in wherever you like.

Each one has a full walkthrough that shows the exploit from first poke to fix. This is the place to learn how a flaw works, step by step. The app itself carries no hints, so if you would rather hunt them down yourself, point your tools at it first and come back here to check your work.

The suggested route

An attack path, easy to hard

The exercises are laid out the way a real engagement tends to unfold: start at the front of the shop with what an anonymous visitor can break, use that to get inside, then abuse the access you earned and dig into the server. The ๐Ÿ”‘ marks a pivotal one: Pick ’n’ Mix hands you the admin hash and the whole customer list, which opens up most of what follows.

You do not have to follow it. Any exercise can be attempted in any order, and the two grey-box accounts (or registering your own) let you jump straight to the logged-in attacks. The route is a learning curve, not a gate. The sweet rating on each card is how hard the technique is; the phase is where it sits in the path.

Four challenges are on the shelf today. The rest arrive with v1, v2 and v3, and the repo keeps the running total.

2

Getting a key

Authentication

Turn information into access: crack a login, reach the staff areas, break the session.

FF-005 Sherbet

The Staff Room

The admin link is hidden from the menu. It is not hidden from you.

CWE-425 Forced browsing to /admin
Coming in v1
FF-006 Sherbet

Sour Token

The shop signs your session. It also believes you when you say it did not.

CWE-347 Weak session token
Coming in v2
3

Helping yourself

Once you are in

What a logged-in user can abuse. Broken access control and business logic, where being let in is not the same as being allowed everything.

FF-003 Gobstopper

Someone Else's Order

Your order is number 4. Nobody checked whether number 2 is yours.

CWE-639 IDOR on /orders/{id}
Read the walkthrough โ†’
FF-004 Sherbet

Half Price Humbugs

The browser tells the server what a bag of humbugs costs. Be generous to yourself.

CWE-602 Price tampering in the cart POST
Read the walkthrough โ†’
FF-007 Sherbet

Gift Card Grinder

Six characters, no lockout, no delay. Bring a wordlist.

CWE-307 No rate limit on code redemption
Coming in v2
FF-009 Toffee

Loyalty Loophole

Spend the same 500 points twice by asking twice, quickly enough.

CWE-362 Race condition on points spend
Coming in v2
4

Out the back

Deeper server-side

The heavier server-side and stored attacks, often reachable only after you have earned some trust.

FF-008 Toffee

Bad Batch

Leave a review on the rhubarb & custard. Everyone who reads it runs your script.

CWE-79 Stored XSS in product reviews
Coming in v2
FF-012 Toffee

Recipe Card

Every sweet has a PDF allergen sheet. The filename comes straight from you.

CWE-22 Path traversal in the allergen-sheet download
Coming in v3
FF-013 Liquorice

Stock Check

No error messages, no results echoed. Just a yes, a no, and a stopwatch.

CWE-89 Blind SQL injection in the inventory API
Coming in v3
FF-010 Liquorice

Wrapped Wrong

Your saved basket is an object the server rebuilds without looking at it first.

CWE-502 Insecure deserialisation in the saved cart
Coming in v3
FF-011 Liquorice

Delivery Note

Give it a tracking URL and it will fetch it. Any URL. From inside.

CWE-918 SSRF in the delivery-tracking lookup
Coming in v3
FF-015 Liquorice

Supplier Portal

Wholesalers upload stock lists as XML. The parser is trusting to a fault.

CWE-611 XXE in a supplier CSV/XML upload
Coming in v3
FF-014 Liquorice

Ask the Sweet Shop

The assistant recommends sweets. It also reads product descriptions you can edit.

CWE-1427 Prompt injection in the AI flavour assistant
Coming in v3

Want one that isn't here?

Open an issue with the flaw and a sketch of where it fits in a sweet shop. Realistic beats exotic. It should look like a mistake someone would actually make.

Suggest a challenge