DVWA源代码下载地址:别只盯着那个zip包 直接给地址:https://github.com/digininja/DVWA/archive/refs/heads/master.zip。源代这是码下官方仓库的master分支打包,下载完解压就能用。载地址但如果你真以为“下载=学会”,源代那这文章白写了——DVWA的码下价值不在那个压缩包里,而在你解压后怎么折腾它。载地址 先说个坑。源代很多人搜“DVWA下载”,码下会撞进一堆第三方站点,载地址下载到带后门的源代改版。我见过一个朋友,码下装完发现MySQL里多了个陌生表,载地址查了半天是源代某“汉化版”塞的广告插件。所以认准GitHub官方地址,码下或者用git clone https://github.com/digininja/DVWA.git,载地址别贪方便。 解压后你会看到一堆PHP文件,别急着扔进www目录。DVWA的设计思路是“故意留漏洞”,所以它的config文件默认是关着调试的。你得先复制config/config.inc.php.dist为config.inc.php,改数据库密码——这一步卡住过无数新手,因为文档里写的是“把root密码改成p@ssw0rd”,但实际你得改成你自己MySQL的密码。这里有个细节:DVWA的登录页默认账号是admin,密码是password,但那是安装完后的初始值,别搞混了。 真正有意思的是它的源码结构。每个漏洞模块(比如SQL注入、XSS)都单独一个目录,里面的代码故意写得“不设防”。你打开vulnerabilities/sqli/source/low.php,会看到直接拼接字符串的SQL查询,连参数化都没做。对比一下同目录下的high.php,用的是PDO预处理。这种并排对比,比看任何安全教程都直观——代码差异就是攻击面差异。 我建议你下载后先别急着打漏洞,花半小时读一遍dvwa/includes/里的公共函数。比如那个dvwaSecurityLevelSet(),它根据你选的难度(low/medium/high)动态切换代码逻辑。这个设计思路挺妙:同一个URL,不同难度下执行的是不同文件。你改一下cookie里的security_level值,就能在浏览器里直接切换难度,不用重新登录。 还有个冷知识:DVWA的镜像站经常滞后。GitHub上master分支永远是最新版,但有些教程写的“旧版下载地址”可能指向几年前的commit。如果你跟着旧教程做,会发现文件路径对不上——比如早期版本没有vulnerabilities/csp/这个目录,那是后来加的CSP绕过实验。所以下载时看下commit日期,别拿2016年的包指导2024年的作业。 最后说点主观的。DVWA的代码质量其实“烂”得很刻意,但正是这种刻意,让你能看懂真实世界的漏洞长什么样。生产环境的代码不会这么直白,但漏洞原理是相通的。下载只是第一步,真正值钱的是你打开编辑器,把low.php改成medium.php的过程——那才叫学习。 |