ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

网络安全实战入门:从OWASP靶机登录到SQL注入漏洞利用

2026/8/11 10:01:35 拓冰建站 浏览量
网络安全实战入门:从OWASP靶机登录到SQL注入漏洞利用 1. 项目概述从“开机”到“动手”的关键一步很多刚接触网络安全实战的朋友在费了九牛二虎之力跟着教程把VMware装好又把OWASP靶机镜像成功导入启动后常常会对着那个登录界面发愣。虚拟机是跑起来了但然后呢直接去网上搜漏洞利用代码吗还是漫无目的地到处点点看这个“第一步”如果走错了不仅效率低下还可能因为操作不当把自己绕晕甚至打击初学者的信心。其实成功登录靶机并开启第一个实战练习远不止输入用户名密码那么简单。这第一步恰恰是建立正确安全测试思维和操作流程的起点。它关乎环境确认、信息收集、目标理解以及最重要的——建立一个安全、可控的测试环境。今天我就结合自己带新人时最常见的困惑把这“第一步”拆解成一套清晰、可复现的动作让你不仅能登录进去更能知道登录后该往哪里看、做什么为后续所有的渗透测试学习打下坚实的基础。2. 登录前准备确认你的“作战实验室”状态在激动地输入密码之前有几项关键的准备工作必须完成。这就像外科医生上手术台前要检查器械电工操作前要验电一样是保障后续操作安全、顺畅的前提。2.1 网络模式选择与隔离确认这是最重要也是最容易被新手忽略的一步。VMware提供了多种网络适配器模式如桥接、NAT、仅主机选择不当可能导致你的靶机暴露在真实网络中带来不可预知的风险。为什么选择“仅主机模式”Host-Only对于OWASP这类漏洞靶机的学习强烈建议将虚拟机的网络适配器设置为“仅主机模式”。在这个模式下虚拟机与宿主机你的物理电脑之间会形成一个封闭的私有网络。虚拟机可以访问宿主机但无法访问外部互联网外部网络也无法访问虚拟机。这就构建了一个完美的隔离沙箱。注意切勿在未充分了解风险的情况下将处于桥接模式且包含已知漏洞的靶机接入公司或公共网络这既是安全风险也可能涉及法律问题。操作步骤在VMware中确保靶机虚拟机处于“已关机”状态。右键点击虚拟机 - “设置”。选择“网络适配器”。在“网络连接”部分选择“仅主机模式”。点击“确定”保存。验证网络隔离启动靶机后在宿主机上打开命令提示符CMD或终端尝试 ping 靶机的IP地址通常启动后屏幕上会显示如192.168.xx.xx。如果能 ping 通说明宿主机与靶机网络连通此时尝试在宿主机浏览器中 ping 一个外网地址如ping 8.8.8.8应该是不通的。这就说明隔离成功。2.2 获取靶机访问凭证OWASP BWABroken Web Applications靶机通常提供了默认的登录账号。这是你进入系统的钥匙。常见的默认凭证用户名/密码root/owaspbwa或者有些版本的登录界面直接提示使用root用户密码为空。启动虚拟机后屏幕上通常会滚动大量启动信息留意寻找类似IP address: 192.168.1.100和Login: root这样的提示。把这些信息记下来。如果屏幕信息滚动太快怎么办一个实用技巧是在VMware虚拟机窗口中右键点击选择“抓取屏幕图像”。这相当于给虚拟机的当前控制台界面截图你可以从容地查看IP和登录提示。2.3 准备你的“攻击机”环境你的物理电脑宿主机将扮演“攻击机”的角色。你需要在这里运行各种安全工具对靶机进行测试。因此需要提前准备好一些基础工具浏览器推荐使用 Firefox 或 Chrome并安装一些常用的安全测试插件如FoxyProxy用于管理代理、Wappalyzer识别网站技术栈、HackBar简化请求发送等。对于纯新手至少先准备好一个浏览器。网络扫描工具nmap是必备的。在Windows上你可以下载安装 Nmap 的官方图形界面Zenmap或者使用命令行版本。在Linux或macOS上通常可以通过包管理器安装。文本编辑器用于记录笔记、修改Payload等。Notepad、VS Code、Sublime Text 都可以。终端/命令提示符熟悉基本的命令行操作会让你事半功倍。3. 登录系统与初始信息收集现在我们可以正式登录了。登录后的操作不是直奔主题去“黑”而是系统地“看”和“记”。3.1 完成系统登录在VMware中启动OWASP BWA靶机等待启动完成直到出现登录提示符通常是owaspbwa login:。输入用户名root按回车。输入密码owaspbwa输入时密码不可见按回车。登录成功后你会看到类似rootowaspbwa:~#的命令行提示符这表示你已获得系统的最高权限root shell。登录后的第一个动作先别急着运行任何命令。花几秒钟看看命令行提示符前有没有显示主机名或IP地址。如果没有输入命令ifconfig或ip addr show来查看靶机在当前“仅主机模式”网络下获取到的IP地址。记下这个IP例如192.168.137.128。这个IP就是你后续所有测试中要访问的目标地址。3.2 理解靶机构成它不是“一个”网站这是新手最大的认知误区。OWASP BWA不是一个单一的漏洞演示页面而是一个集成了数十个独立、存在漏洞的Web应用程序的集合。登录后你操作的是一个Linux系统这个系统上通过Apache、MySQL等服务运行着很多个不同的Web应用。如何访问这些应用你不需要在虚拟机命令行里操作这些网页。记住刚才记下的靶机IP例如192.168.137.128。在你的宿主机浏览器中直接访问这个IP地址http://192.168.137.128。你会看到一个导航页面上面罗列了所有可用的漏洞应用比如Mutillidae: 一个非常著名的综合性漏洞演练平台包含OWASP Top 10的所有漏洞类型。DVWA (Damn Vulnerable Web Application): 另一个极受欢迎的漏洞练习平台难度可调。WebGoat: OWASP官方的Java漏洞学习平台。以及很多其他如bWAPP、SQLol等专门练习某种漏洞的应用。所以登录后的“第一步”在实操上就是打开宿主机浏览器访问靶机IP看到这个导航首页。你的实战战场在这里而不是在虚拟机的命令行里命令行主要用于管理服务、查看日志等后台操作。3.3 系统性信息收集你的“侦查”阶段在开始任何测试之前对目标进行信息收集是专业渗透测试的固定流程。对于这个已知的靶机我们练习的是流程和方法。服务与端口扫描 在宿主机上打开终端或Zenmap对靶机IP进行扫描。# 使用nmap进行快速扫描识别开放端口 nmap -sV -O 192.168.137.128-sV参数尝试识别端口上运行的服务及其版本-O参数尝试识别操作系统。你会看到什么很可能会看到80端口HTTP/web服务、22端口SSH、3306端口MySQL等。记录下这些信息。这告诉你目标开放了哪些“门”。Web应用指纹识别 访问http://192.168.137.128后除了看导航页按F12打开浏览器开发者工具。查看响应头在“网络”(Network)标签页刷新页面点击第一个文档请求查看“响应头”(Response Headers)。这里可能包含Server: Apache/2.x.xX-Powered-By: PHP/x.x.x等信息揭示了Web服务器和编程语言版本。使用Wappalyzer插件如果安装了它会自动在浏览器工具栏显示检测到的技术栈如PHP、Apache、jQuery等。目录与文件枚举 虽然靶机导航页给出了主要入口但了解如何发现隐藏内容是一项基础技能。我们可以使用工具如gobuster或dirb进行目录爆破此步骤可在后续深入但需知道其存在。# 示例使用dirb发现潜在目录需在攻击机上安装dirb dirb http://192.168.137.128 /usr/share/wordlists/dirb/common.txt对于初次接触可以先手动尝试一些常见路径如/admin,/phpinfo.php,/robots.txt,/backup等看看靶机是否有响应。4. 选择第一个实战练习目标与设定安全边界信息收集完毕后面对琳琅满目的漏洞应用新手往往会选择困难。我的建议是从DVWA开始。4.1 为什么是DVWA难度可调DVWA有“低”、“中”、“高”、“不可能”四个安全等级。你可以从“低”开始建立信心理解漏洞最原始、最赤裸的形态。界面友好每个漏洞模块都有简单的说明和“View Source”、“View Help”按钮可以直接查看前端和后端源码以及漏洞原理和修复建议。这非常适合学习。聚焦核心漏洞它涵盖了SQL注入、命令注入、文件上传、XSS、CSRF等最核心的Web漏洞是打好基础的绝佳选择。4.2 访问并初始化DVWA在靶机导航页 (http://192.168.137.128) 上找到并点击 “Damn Vulnerable Web Application (DVWA)” 的链接。这会带你进入DVWA的登录页。DVWA的默认凭证通常是admin/password。输入并登录。首次登录后DVWA可能会提示你“数据库未设置”。你需要点击页面上的Setup / Reset DB按钮来初始化数据库。成功后会显示“Setup Successful”。初始化后在左侧菜单找到DVWA Security将安全级别设置为Low。这一步至关重要它确保了漏洞以最容易利用的方式存在。4.3 设定你的测试原则与边界在动手前必须明确几条“军规”这对养成职业习惯至关重要仅限本地环境确保你的靶机处于“仅主机模式”所有测试行为仅发生在你的物理机与虚拟机之间。明确学习目标每次练习聚焦一个漏洞类型。例如今天只玩“SQL Injection”。遵循“观察-理解-利用-修复”循环观察正常功能是怎样的输入框在哪里理解点击“View Source”看看前后端代码是怎么写的漏洞点在哪里例如低安全级别的SQL注入代码直接拼接了用户输入。利用尝试构造Payload进行利用如输入1 OR 11。修复切换到“中”或“高”安全级别再看源码理解开发者是如何通过过滤、转义或使用参数化查询来修复漏洞的。做好记录准备一个笔记可以用OneNote、Obsidian或纯文本文件记录下目标URL漏洞类型使用的Payload产生的效果如回显的数据、执行的命令源码分析要点修复方案5. 第一个实战练习低安全级别的SQL注入现在让我们完成第一个完整的、有明确目标的实战练习。我们将利用DVWA的“SQL Injection”模块。5.1 练习目标与步骤拆解目标通过用户ID输入框获取数据库中的非公开信息例如其他用户数据、数据库名、表名等。前置知识极简版SQL注入的核心是“让应用程序执行非预期的SQL语句”。在低安全级别下用户输入被直接拼接到SQL查询字符串中没有经过任何过滤。实操步骤定位目标在DVWA左侧菜单点击SQL Injection。理解功能页面上有一个输入框提示你输入User ID。正常功能是输入1、2、3等数字查询对应用户的名和姓。查看源码点击页面下方的View Source按钮。你会看到类似如下的PHP代码$id $_REQUEST[id]; $getid SELECT first_name, last_name FROM users WHERE user_id $id; $result mysqli_query($GLOBALS[___mysqli_ston], $getid) or die(pre . ((is_object($GLOBALS[___mysqli_ston])) ? mysqli_error($GLOBALS[___mysqli_ston]) : (($___mysqli_res mysqli_connect_error()) ? $___mysqli_res : false)) . /pre);关键点$id直接来自用户输入并被用单引号包裹后拼接到SQL语句中。构造试探性Payload我们的目标是“逃逸”出单引号的包围并注入我们自己的SQL逻辑。在输入框输入1数字1加上一个单引号。点击Submit。结果分析如果页面返回一个SQL错误如包含“You have an error in your SQL syntax”这是一个强烈的注入点信号。这说明我们输入的单引号破坏了原SQL语句的语法结构导致数据库报错。错误信息本身也泄露了部分查询结构。判断注入类型与闭合方式从错误信息和源码可知原语句是WHERE user_id $id。我们输入1后语句变成WHERE user_id 1多了一个单引号。为了让语法正确我们需要“注释”掉后面多余的部分。在SQL中--注意后面有个空格或#可以注释掉后续语句。输入1 --注意--后有一个空格在URL中空格常编码为或%20但在DVWA输入框直接打空格即可。结果分析如果页面正常返回了ID为1的用户信息恭喜这说明注入成功。现在的语句是WHERE user_id 1 -- --后面的单引号被注释掉了语法正确。利用注入获取额外信息现在我们可以构造更复杂的Payload来“问”数据库更多问题。这里利用UNION SELECT语句它可以将两个查询的结果合并返回。前提是两个查询的列数必须相同。第一步确定查询列数。使用ORDER BY子句来探测。输入1 ORDER BY 1 --正常输入1 ORDER BY 2 --正常输入1 ORDER BY 3 --如果报错说明原查询只有2列。我们实际测试DVWA会发现ORDER BY 3也正常直到ORDER BY 4才报错说明原查询有3列。你需要自己测试到报错为止。第二步执行UNION查询获取数据库信息。已知原查询有3列我们可以构造一个UNION查询让后一个查询返回我们想要的信息。输入1 UNION SELECT 1,2,3 --结果分析页面可能会在原本显示“名”、“姓”的地方显示数字2和3。这说明页面的第2和第3列是回显点即查询结果会显示在网页上的位置。我们接下来就可以把想要的信息放在这两个位置上。第三步获取当前数据库名和用户。输入1 UNION SELECT 1, database(), user() --结果分析页面应该在相应位置显示当前数据库的名称如dvwa和连接数据库的用户名如rootlocalhost。database()和user()是MySQL的内置函数。第四步获取数据库中的表名。MySQL中表信息存储在information_schema.tables中。输入1 UNION SELECT 1,table_name,3 FROM information_schema.tables WHERE table_schemadatabase() LIMIT 0,1 --解释table_schemadatabase()限定当前数据库LIMIT 0,1表示从第0行开始取1条结果即第一个表。你会看到第一个表名比如guestbook。要查看更多可以修改LIMIT 1,1第二个表LIMIT 2,1第三个表... 直到找到像users这样的敏感表。第五步获取users表的列名。表结构信息存储在information_schema.columns中。输入1 UNION SELECT 1,column_name,3 FROM information_schema.columns WHERE table_schemadatabase() AND table_nameusers LIMIT 0,1 --同样通过修改LIMIT参数可以遍历出user_id,first_name,last_name,user,password,avatar等列名。其中user和password列是我们的终极目标。第六步提取用户名和密码。输入1 UNION SELECT 1,user,password FROM users --结果分析页面会列出users表中所有用户的登录名和密码哈希值通常是MD5加密的。例如你可能会看到admin和5f4dcc3b5aa765d61d8327deb882cf99这是“password”的MD5值。5.2 练习后的关键动作理解与拓展成功获取到哈希值并不是结束而是深入学习的开始理解密码哈希你拿到的是经过MD5算法处理后的哈希串并非明文密码。这体现了系统对敏感信息的一种虽然较弱保护。你可以尝试去一些在线MD5解密网站如cmd5.com破解这个简单的哈希理解哈希破解的概念。查看中/高安全级别源码回到DVWA Security将级别调到Medium或High再次查看SQL Injection的源码。你会发现开发者使用了mysql_real_escape_string()函数或预处理语句prepare/bind_param来防御注入。对比学习理解修复原理。尝试其他注入技巧在低安全级别下还可以尝试布尔盲注如果页面没有直接回显数据但会根据SQL语句真假返回不同的页面内容如“用户存在”/“用户不存在”该如何利用时间盲注如果页面无论真假都返回相同内容但可以利用SLEEP()函数通过页面响应时间来判断注入是否成功。6. 常见问题与排查技巧实录即使按照步骤操作新手也难免会遇到问题。这里记录几个高频问题及解决方法。6.1 虚拟机网络问题问题宿主机无法ping通靶机IP或浏览器无法访问http://[靶机IP]。检查1网络适配器模式确认虚拟机设置是否为“仅主机模式”。检查2VMware网络服务在宿主机Windows服务中运行services.msc确保“VMware NAT Service”和“VMware DHCP Service”是运行状态。检查3防火墙暂时关闭宿主机和虚拟机内的防火墙进行测试。检查4IP地址在虚拟机内用ifconfig确认IP在宿主机用ipconfig查看VMware Network Adapter VMnet1仅主机模式网卡的IP。两者应在同一网段如192.168.137.x。6.2 DVWA页面访问或初始化失败问题访问DVWA页面显示连接错误、白页或数据库连接失败。检查1Apache/MySQL服务状态在虚拟机命令行执行service apache2 status和service mysql status或systemctl status apache2/systemctl status mysql。确保它们都是active (running)。检查2手动启动服务如果服务未运行使用service apache2 start和service mysql start启动它们。检查3重置DVWA数据库如果页面提示数据库错误确保你已点击过Setup / Reset DB按钮并看到成功提示。6.3 SQL注入Payload不生效问题输入Payload后页面没有返回预期结果而是显示“User ID is missing from the database.”或其他错误。检查1安全级别确认DVWA安全级别已设置为Low。这是最常见的原因。检查2Payload格式确保单引号、空格、注释符--的格式正确。在浏览器地址栏直接操作时空格需要编码为%20或。检查3靶机应用差异确保你操作的是“SQL Injection”模块而不是“SQL Injection (Blind)”盲注模块。两者利用方式不同。检查4使用工具辅助对于更复杂的注入可以使用sqlmap这样的自动化工具来验证和利用。在攻击机上可以对目标URL运行sqlmap -u http://192.168.137.128/dvwa/vulnerabilities/sqli/?id1SubmitSubmit --cookie[你的DVWA会话Cookie] --batch进行测试需要先登录DVWA从浏览器开发者工具中复制Cookie。注意在真实环境中未经授权使用sqlmap是违法的仅在授权的靶场练习。6.4 心态与习惯问题“为什么我的结果和教程不一样”靶机版本、浏览器环境、输入细节都可能导致细微差异。学会看错误信息理解其含义比复现一模一样的结果更重要。“记不住那么多命令和Payload”完全不需要死记硬背。建立一个自己的“武器库”笔记Cheat Sheet把常用的命令、Payload、测试流程模板化记录随用随查。“感觉在‘按按钮’不理解原理”强迫自己慢下来。每个Payload成功或失败后都去点击View Source对照着源码一行行看理解用户输入是如何被处理的漏洞代码长什么样。这是从“脚本小子”走向“安全工程师”的关键一步。7. 建立你的持续学习路径成功完成第一次SQL注入练习只是一个开始。OWASP BWA靶场是一座宝库建议按照一个合理的路径循序渐进核心漏洞通关在DVWA的“低”安全级别下逐一攻克以下模块Command Injection命令注入File Upload文件上传Cross Site Scripting - Reflected/DOM/Stored (XSS跨站脚本)Cross Site Request Forgery - Low/Medium (CSRF跨站请求伪造)Brute Force - Low/Medium暴力破解可选其他如File Inclusion, CAPTCHA Bypass等。提升难度将DVWA安全级别调至“中”和“高”再次尝试上述漏洞。思考防护机制是什么如何绕过。例如中级别的SQL注入使用了mysql_real_escape_string()但如果是数字型注入它可能依然无效。探索其他靶场应用Mutillidae更贴近真实CTF场景漏洞场景更丰富。WebGoat课程化学习每个漏洞都有明确的教学目标和练习。bWAPP包含100多个漏洞涵盖面极广。引入专业工具Burp Suite学习配置代理拦截、重放、修改HTTP请求这是手工测试的“瑞士军刀”。OWASP ZAP一款免费的自动化漏洞扫描器适合初学者了解自动化扫描流程和报告。Nmap深入学习更复杂的扫描技巧和脚本。Metasploit在掌握了基础Web漏洞后可以尝试用它进行漏洞利用和提权练习靶场中可能包含相关漏洞。登录OWASP靶机后的第一步绝不是盲目的攻击而是有条不紊地搭建环境、收集信息、理解目标、设定边界然后选择一个明确的切入点进行有目的、有记录、有思考的练习。从最简单的SQL注入开始遵循“观察-理解-利用-修复”的循环你迈出的每一步都会无比扎实。记住在这个沙箱里你的目标不是“攻破”而是“学会”。每一次成功的注入每一次绕过的尝试都应该伴随着对源代码的审视和对防御原理的探究。当你能清晰地解释漏洞为何存在以及如何修复时你的能力才真正得到了提升。安全之路漫长但每一个清晰的“第一步”都在为你铺就坚实的基石。