1. 项目概述:从靶场到实战,Webug的攻防演练价值
如果你是一名正在学习Web安全,或者想从理论走向实践的安全爱好者、渗透测试新手,那么“Webug”这个名字你大概率不会陌生。它不是一个商业化的漏洞扫描器,也不是一个复杂的渗透测试平台,而是一个由国内安全社区爱好者自发维护的、专门用于Web漏洞学习与攻防演练的靶场系统。简单来说,Webug就是一个“漏洞博物馆”和“实战训练场”的结合体。它把各种常见的、经典的Web安全漏洞,比如SQL注入、XSS跨站脚本、文件上传、命令执行等,集成在一个或多个精心设计的Web应用场景里,供学习者在一个合法、安全的环境中进行“攻击”练习。
我最初接触Webug,是在刚入门安全行业,啃完一堆理论书籍却无从下手的时候。书本上的SQL注入原理讲得再透彻,不亲手在输入框里尝试构造一个‘ or ‘1’=’1,不亲眼看到数据库里的用户列表被爆出来,那种感觉始终是隔靴搔痒。Webug恰好填补了这个空白。它不像一些大型的综合性靶场(如DVWA、WebGoat)那样功能庞杂,Webug的早期版本设计得非常“直给”——每个漏洞点几乎都是明牌,目标明确,就是为了让你理解漏洞的成因、利用手法和修复方案。这种设计对于新手建立最初的“手感”和“攻击者思维”至关重要。
那么,Webug具体能解决什么问题,又适合谁来使用呢?首先,它解决了“练手环境”的问题。在真实网络中随意测试是违法的,而搭建一个包含多种漏洞的复杂环境又非常耗时。Webug提供了一个开箱即用的环境,通常以虚拟机镜像或Docker容器的形式提供,下载导入就能直接开始练习。其次,它提供了“阶梯式”的学习路径。从最简单的显错注入到复杂的盲注,从前端的反射型XSS到存储型XSS,难度可以逐步提升。最后,它非常适合安全初学者、高校网络安全专业学生、以及希望巩固Web安全基础的在职工程师。通过反复攻破Webug中的关卡,你不仅能掌握漏洞利用技巧,更能深刻理解开发过程中哪些疏忽会导致这些致命问题,从而在未来的开发或审计工作中具备更强的防御意识。
2. Webug靶场核心架构与部署解析
2.1 环境构成与技术栈选择
一个典型的Webug靶场环境,其核心是一个包含了漏洞的Web应用程序,以及支撑它运行的后端服务。常见的部署形式是提供一个完整的虚拟机镜像(如.ova格式,用于VirtualBox或VMware)或一个Docker Compose编排文件。我们以虚拟机镜像为例,拆解其内部构成。
这个虚拟机通常是一个精简版的Linux系统,比如Ubuntu Server或CentOS的最小化安装。里面预装了LAMP(Linux, Apache, MySQL, PHP)或LNMP(Linux, Nginx, MySQL, PHP)堆栈。为什么选择这套经典组合?原因很实际:第一,普及度高,绝大多数传统的Web应用都基于此,学习者熟悉后可以无缝映射到真实世界;第二,轻量,易于在个人电脑上运行;第三,与PHP相关的动态类型、弱类型等特性,本身就是许多经典Web漏洞(如类型混淆导致的漏洞)的温床,具有极佳的教学代表性。
靶场应用本身是用PHP编写的,可能还会用到一些JavaScript(用于前端交互和XSS漏洞展示)。数据库里预置了结构简单的表,比如users(id, username, password, email)、articles(id, title, content)等,数据也是模拟的。整个应用由多个独立的“关卡”或“题目”页面组成,每个页面聚焦演示一种或一类漏洞。
注意:不同版本、不同来源的Webug镜像在具体漏洞设置和难度上可能有差异。有些版本会分为“基础版”、“进阶版”甚至“渗透版”,漏洞的隐蔽性和利用难度逐级增加。在开始前,最好确认你所用版本的关卡设计文档或说明。
2.2 本地部署实战与网络配置要点
拿到Webug的虚拟机镜像文件(例如webug.ova)后,第一步是导入到你的虚拟化软件中。我以VirtualBox为例,分享几个关键步骤和避坑点。
首先,打开VirtualBox,点击“管理”->“导入虚拟电脑”,选择你的.ova文件。在导入设置中,有一个极其关键的选项:“重新初始化所有网卡的MAC地址”。务必勾选此选项。如果不勾选,当同一个网络中有多台克隆自同一镜像的虚拟机时,MAC地址冲突会导致网络异常。
导入完成后,不要急着启动。先进入虚拟机的“设置”->“网络”。Webug靶场通常只需要能与你宿主机(物理电脑)通信即可,不需要访问外网。因此,将“连接方式”设置为“仅主机(Host-Only)网络”是最佳选择。这种模式会在你的电脑上创建一个虚拟的私有网络,虚拟机和宿主机处于同一个局域网段,可以互相访问,但虚拟机无法上网。这既满足了练习需求,又隔绝了外部风险,避免因靶场环境存在未知后门而导致的安全问题。
启动虚拟机后,你需要确定它的IP地址。在虚拟机内打开终端,输入命令ip addr或ifconfig(较新系统可能需安装net-tools)。在输出信息中找到对应的网卡(比如eth0或ens33),查看其inet字段,那就是虚拟机的IP,通常类似于192.168.56.101(具体网段取决于你的Host-Only网络配置)。
最后,在你的宿主机浏览器中,输入这个IP地址,例如http://192.168.56.101。如果一切顺利,你应该能看到Webug的入口页面。如果无法访问,请按以下顺序排查:
- 防火墙:检查虚拟机内的防火墙是否关闭或放行了80/443端口。可以尝试
sudo systemctl stop firewalld(CentOS/RHEL系)或sudo ufw disable(Ubuntu/Debian系)临时关闭测试。 - 服务状态:确认Web服务器(Apache/Nginx)和数据库(MySQL)是否已运行。在虚拟机内执行
systemctl status apache2和systemctl status mysql查看。 - 宿主机Hosts文件(罕见情况):极少数情况下,可能需要将虚拟机IP和某个域名绑定,这通常会在Webug的文档中说明。
2.3 目录结构与关卡设计初探
成功访问后,我们简单看一下靶场的结构。Webug的入口往往是一个索引页,列出了所有可用的漏洞练习题目。点击进入每个题目,都是一个独立的PHP页面。
从文件系统角度看,Webug的源码目录可能如下所示:
/var/www/html/webug/ ├── index.php # 主入口页面 ├── sql/ # SQL注入相关关卡目录 │ ├── basic1.php # 基础数字型注入 │ ├── basic2.php # 基础字符型注入 │ └── blind.php # 布尔盲注 ├── xss/ # XSS相关关卡目录 │ ├── reflected.php # 反射型XSS │ └── stored.php # 存储型XSS ├── upload/ # 文件上传漏洞目录 │ └── index.php ├── include/ # 文件包含漏洞目录 │ └── index.php ├── command/ # 命令执行漏洞目录 │ └── index.php ├── db.sql # 数据库初始化脚本 └── config.php # 数据库连接配置文件这种模块化设计非常清晰。每个漏洞类型的文件夹下,可能还有不同难度的子关卡。config.php文件通常包含了连接数据库的密码,在学习过程中,你可以打开这个文件查看,理解应用是如何连接数据库的,这也是学习的一部分。但切记,在真实环境中,配置文件泄露本身就是严重的安全漏洞。
3. 核心漏洞原理与手把手攻防实践
接下来,我们挑选Webug中最具代表性的几个漏洞类型,深入原理,并一步步进行实战演练。我会以“攻击者”视角演示利用过程,同时以“开发者”视角分析漏洞根源和修复方案。
3.1 SQL注入:从显错到盲注的思维跃迁
SQL注入是Web安全的“头号杀手”,也是Webug的重头戏。我们由浅入深来看。
3.1.1 数字型注入与联合查询利用
假设关卡sql/basic1.php用于显示文章详情,URL是http://192.168.56.101/webug/sql/basic1.php?id=1。页面正常显示了ID为1的文章。
攻击者思维第一步:探测。将ID参数改为id=1‘(一个单引号)。如果页面返回了数据库错误信息,比如“You have an error in your SQL syntax...”,那么几乎可以断定存在SQL注入,并且是字符型。如果页面显示异常(如空白或错误)但没有具体报错,则可能是数字型注入或其他。
我们改为id=1 and 1=1,页面正常。改为id=1 and 1=2,页面异常(文章不显示)。这证实了数字型注入,且后端SQL语句可能是SELECT * FROM articles WHERE id = $id。
下一步,确定查询返回的列数。使用ORDER BY子句进行猜测:id=1 order by 1(正常),order by 2(正常)... 直到order by 5时页面报错,说明查询结果共4列。
知道了列数,就可以使用UNION SELECT来窃取数据。构造Payload:id=-1 union select 1,2,3,4。这里把原ID设为-1(一个不存在的ID),是为了让原查询结果为空,从而页面只显示我们union查询的结果。页面显示数字“2”和“3”的位置,说明这两个位置可以回显数据。
现在,我们就可以把需要的信息放在2和3的位置上。例如,获取当前数据库用户名和数据库名:id=-1 union select 1, user(), database(), 4。页面上可能会显示“root@localhost”和“webug_db”。
继续深入,获取表名。MySQL中,information_schema.tables存储了元数据。Payload:id=-1 union select 1, table_name, 3, 4 from information_schema.tables where table_schema=database()。这样可能会爆出users,articles等表名。
最后,获取users表的列名和数据:id=-1 union select 1, column_name, 3, 4 from information_schema.columns where table_name=‘users’ and table_schema=database()。得到列名如username,password后,最终Payload:id=-1 union select 1, username, password, 4 from users。至此,管理员账号和密码(可能是MD5哈希)便到手了。
3.1.2 布尔盲注:在没有回显时的博弈
如果页面不会显示数据库错误,也不会回显union查询的数据,只有“文章存在”和“文章不存在”两种状态,这就是布尔盲注。
假设id=1正常显示文章,id=999显示“文章不存在”。我们的攻击思路是利用AND逻辑,通过页面真假状态来逐位猜测数据。
例如,猜测数据库名长度:id=1 and length(database())=1(页面异常,说明长度不是1),id=1 and length(database())=5(页面正常,说明数据库名长度是5)。
接着,猜测数据库名第一个字符的ASCII码:id=1 and ascii(substr(database(),1,1))>100(正常,说明大于100),id=1 and ascii(substr(database(),1,1))>110(异常,说明小于等于110)... 通过二分法,最终确定第一个字符的ASCII码是119,对应字母‘w’。重复此过程,依次猜出所有字符,拼出数据库名。
这个过程极其繁琐,必须借助工具。Sqlmap就是自动化完成此过程的利器。但作为学习者,亲手用Burp Suite的Intruder模块或写一个Python脚本模拟这个过程,对理解盲注原理有质的帮助。
实操心得:在练习盲注时,浏览器直接操作太低效。一定要学会使用Burp Suite的Repeater和Intruder模块。将请求发送到Repeater,然后修改Payload,观察响应长度或特定关键词(如“文章不存在”),用Intruder的“狙击手”模式进行爆破。理解工具背后的原理,比单纯会运行工具命令更重要。
3.1.3 漏洞根源与修复方案
漏洞根源在于:开发者直接将用户输入的id参数,未经任何处理,拼接到了SQL语句中。
$id = $_GET[‘id’]; $sql = “SELECT * FROM articles WHERE id = “ . $id; $result = mysqli_query($conn, $sql);修复方案:
- 使用参数化查询(预编译语句):这是根本解决方案。PHP中使用PDO或MySQLi扩展。
$stmt = $conn->prepare(“SELECT * FROM articles WHERE id = ?”); $stmt->bind_param(“i”, $id); // ‘i‘ 表示整数类型 $stmt->execute(); $result = $stmt->get_result(); - 严格类型转换:对于数字型参数,强制转换为整数。
$id = (int)$_GET[‘id’]; - 最小权限原则:数据库连接账户不应使用root,应仅为应用分配必要的SELECT、UPDATE等权限,绝不能有DROP、FILE等危险权限。
3.2 跨站脚本攻击:前端的“信任危机”
XSS的核心在于,恶意脚本被注入到页面中,并被其他用户的浏览器执行。Webug通常会提供反射型和存储型两种场景。
3.2.1 反射型XSS:一次性的诱饵
在反射型XSS关卡,往往有一个搜索框。输入关键词后,页面会显示“您搜索的关键词是:XXX”。尝试输入 ``,如果弹窗出现,证明漏洞存在。
利用方式:攻击者构造一个恶意链接,如http://靶场地址/xss/reflected.php?keyword=<script>alert(document.cookie)</script>,然后通过邮件、社交网站等诱骗受害者点击。受害者点击后,其会话Cookie就可能被alert出来(实际攻击中会发送到攻击者服务器)。
3.2.2 存储型XSS:持久化的毒药
在存储型XSS关卡,如留言板,输入的内容会被保存到数据库,并在所有用户访问留言板时加载显示。输入一条包含恶意脚本的留言,例如 ``。提交后,任何后来浏览留言板的用户,其浏览器都会执行这段脚本,危害范围更广。
3.2.3 漏洞根源与修复方案
根源在于:用户输入的数据,在输出到HTML页面时,没有进行正确的转义。
// 漏洞代码 echo “您的搜索内容是:” . $_GET[‘keyword’];修复方案:对输出到HTML上下文的数据进行HTML实体编码。
// 修复代码 echo “您的搜索内容是:” . htmlspecialchars($_GET[‘keyword’], ENT_QUOTES, ‘UTF-8’);htmlspecialchars()函数会将<,>,&,“,‘等字符转换为HTML实体(如<变为<),使得浏览器将其解释为普通文本,而非HTML标签或脚本。
注意事项:转义必须在正确的上下文中进行。如果数据输出在JavaScript代码块中(
<script>var a = “<?php echo $input; ?>“;</script>),则需要使用JavaScript的转义规则,否则可能被闭合字符串注入新的JS代码。现代前端框架(如React, Vue)默认提供了较好的XSS防护,但传统服务端渲染页面仍需谨慎。
3.3 文件上传漏洞:通往服务器后台的“任意门”
文件上传漏洞的关卡通常提供一个头像上传功能,只允许上传图片(如.jpg, .png)。
3.3.1 绕过前端验证
首先,尝试上传一个.php后缀的webshell文件(内容如``)。如果页面提示“只允许上传图片格式”,这可能是前端JavaScript验证。绕过方法很简单:直接使用Burp Suite拦截上传请求,将文件名shell.php修改为shell.jpg,但文件内容不变。如果服务器仅依赖前端验证,这一步就能成功。
3.3.2 绕过服务端MIME类型验证
如果前端绕过后仍失败,可能是服务端检查了HTTP请求头中的Content-Type。浏览器上传图片时,该字段是image/jpeg。拦截请求,将Content-Type: application/php改为Content-Type: image/jpeg,再次尝试。
3.3.3 绕过服务端后缀名黑名单
服务端可能有一个禁止列表(黑名单),阻止.php,.phtml,.php5等后缀。可以尝试一些偏门后缀,如.php7,.phps,.pht,或者利用操作系统特性,如.php.(Windows下末尾的点会被自动去除)、.php%20(空格)、.php::DATA(NTFS流)等。也可以尝试大小写混合.PhP,如果服务器系统大小写不敏感(Windows),可能会被识别。
3.3.4 利用解析漏洞
这是更高级的绕过。例如,Nginx的某些错误配置可能导致1.jpg/.php被解析为PHP文件。或者,Apache的mod_php模块可能将1.jpg.php解析为PHP。上传一个名为shell.jpg.php的文件进行测试。
3.3.5 漏洞根源与修复方案
根源在于:服务端对上传文件的检查不全面、不彻底。 修复方案:
- 白名单验证:只允许指定的安全后缀(如
.jpg,.png,.gif),拒绝其他所有。这比黑名单更有效。 - 文件内容检查:使用
getimagesize()函数检查文件头是否为真实的图片格式,防止图片马。 - 重命名文件:上传后,使用随机生成的文件名(如UUID)替换原文件名,并强制修改后缀为安全后缀。
$new_filename = md5(uniqid()) . ‘.jpg’; - 控制权限:上传目录设置为不可执行。通过Web服务器配置,禁止该目录下的脚本文件被解析。例如,在Apache的
.htaccess中添加php_flag engine off。 - 文件存储隔离:最好将上传的文件存储在非Web根目录下,通过一个专门的脚本(如
download.php?id=xxx)来读取和返回文件,这样即使上传了脚本也无法直接通过URL访问执行。
4. 工具链协同与高效渗透测试流程
在Webug上练习,不能只靠浏览器地址栏。一套顺手的工具链能极大提升学习效率和实战感。下面我分享我的常用组合和流程。
4.1 侦察与信息收集:Burp Suite作为枢纽
启动Webug靶场后,第一件事是配置浏览器代理到Burp Suite。这样所有的浏览器流量都会经过Burp。
- 站点地图:随意浏览几个Webug的页面,Burp的Target->Site map中会自动生成站点的目录结构。这让你对靶场有个整体视图。
- 爬虫:使用Burp的Spider功能,自动爬取整个站点的链接,发现所有可能的入口点(隐藏目录、参数等)。
- 主动扫描:对于关键功能点(登录、搜索、上传),可以右键发送到Burp的Scanner进行主动漏洞扫描。注意:在真实授权测试中慎用主动扫描,可能对业务造成影响。但在Webug这样的靶场,可以放心使用,看看自动化工具能发现什么,并与手动测试结果对比。
4.2 漏洞利用与自动化:Sqlmap的精准打击
当手动发现一个疑似SQL注入点后,用Sqlmap进行自动化利用和验证是最佳选择。
假设我们发现的注入点是http://192.168.56.101/webug/sql/basic1.php?id=1。 基本命令:
sqlmap -u “http://192.168.56.101/webug/sql/basic1.php?id=1“ --batch--batch参数会让Sqlmap以非交互模式运行,自动选择默认选项。它会自动探测注入类型、数据库类型等。
获取当前数据库名:
sqlmap -u “http://192.168.56.101/webug/sql/basic1.php?id=1“ --current-db列出所有表:
sqlmap -u “http://192.168.56.101/webug/sql/basic1.php?id=1“ -D webug_db --tables导出users表数据:
sqlmap -u “http://192.168.56.101/webug/sql/basic1.php?id=1“ -D webug_db -T users --dump对于需要Cookie的页面(如登录后的关卡),可以这样使用:
sqlmap -u “http://靶场地址/vul.php?id=1“ --cookie=“PHPSESSID=你的会话ID” ...Sqlmap的强大之处在于它能自动处理各种过滤和WAF(Web应用防火墙)的绕过。通过观察Sqlmap的Payload,你可以学到很多高级的注入技巧。
4.3 综合演练:从一个注入点到GetShell
在渗透测试中,目标往往是获取服务器的控制权(GetShell)。在Webug中,我们可以模拟这一过程。
- 信息收集:通过SQL注入,我们获取了数据库中的所有数据,包括后台管理员账号密码(可能是MD5,需要破解)。
- 进入后台:找到后台登录地址(如
/admin/login.php),使用破解或窃取的密码登录。 - 寻找新漏洞:后台往往有更多功能,可能存在更严重的漏洞,比如“系统设置”中的“编辑模板”功能,可能允许直接写入PHP代码。
- 利用文件上传或写入GetShell:如果后台有文件上传功能,尝试上传webshell。如果没有,但存在文件写入或编辑功能(如写日志、修改模板),可以尝试将PHP代码写入一个已存在的
.php文件,或者利用漏洞创建一个新的.php文件。 - 连接Webshell:成功写入一句话木马后,使用中国菜刀(Caidao)、蚁剑(AntSword)或哥斯拉(Godzilla)等webshell管理工具连接。连接地址就是你写入的脚本路径,密码就是你设定的密码(如
pass)。 - 权限提升与内网渗透(在复杂靶场中):获取webshell后,你拥有的可能是Web服务进程的权限(如
www-data用户)。在更高级的靶场设计中,可能需要你进行提权(Privilege Escalation)来获取root权限,或者以这台服务器为跳板,探测和攻击内网的其他机器。
实操心得:这个“注入->后台->GetShell”的路径是一个经典的“点到面”的突破思路。在实际练习中,不要满足于完成一个孤立的漏洞利用。尝试将它们串联起来,模拟一个完整的攻击链。这会让你对渗透测试的整体流程有更深刻的理解。同时,每完成一步,都要思考:作为防守方,如何阻断这一步?是加强密码强度、增加二次验证,还是严格过滤文件操作权限?
5. 从靶场到实战:思维转变与常见问题排查
在Webug上练习熟练后,很多人会跃跃欲试,但一接触真实世界或更复杂的CTF题目就感到无力。这中间缺少的是一种思维上的转变和问题排查能力。
5.1 靶场与真实环境的差异
- 漏洞的隐蔽性:Webug的漏洞往往是“赤裸”的。真实环境的漏洞可能隐藏在复杂的业务逻辑、AJAX异步请求、API接口、或者经过多重编码/过滤的参数中。
- 防御措施的存在:真实网站可能有WAF、输入过滤、输出编码、安全的框架等。你的Payload需要绕过这些防御。例如,SQL注入可能需要使用注释符
/**/绕过空格过滤,使用<>代替=,使用like代替=等。 - 错误信息的缺失:真实网站通常会关闭PHP或数据库的错误回显,使得基于错误的注入和盲注成为常态。你需要更加依赖布尔盲注和时间盲注。
- 业务逻辑的复杂性:靶场的业务逻辑极其简单。真实场景下,你需要先理解业务(如购物流程、订单状态机),才能发现逻辑漏洞(如越权访问、竞争条件、支付漏洞)。
5.2 实战中常见问题与排查技巧
即使是在Webug练习中,你也会遇到各种“坑”。下面是一些常见问题及解决思路:
问题1:页面没有任何变化,感觉漏洞不存在。
- 排查:首先,用Burp Suite拦截请求和响应,查看原始数据。页面看似没变,但HTTP响应头、响应体里可能隐藏了信息(如注释、JS代码)。其次,尝试最基础的Payload,如单引号
‘、双引号“、括号),观察响应时间是否有延迟(时间盲注迹象)。最后,检查参数是否以其他形式传递(如JSON格式、在Cookie中、在自定义HTTP头中)。
问题2:Sqlmap跑不出来,提示“所有参数似乎都不注入”。
- 排查:
- 确认注入点:手动用
and 1=1和and 1=2测试,看页面是否有布尔状态变化。如果没有,可能不是注入点,或者有严格的过滤。 - 处理Token/会话:如果页面有CSRF Token或依赖复杂会话,Sqlmap可能无法维持会话状态。使用
--csrf-token和--csrf-url参数,或者直接提供完整的Cookie和POST数据。 - 调整探测级别:使用
--level和--risk参数提高检测等级。--level 2会检测Cookie注入,--level 3会检测User-Agent等HTTP头注入。--risk 2会尝试更多危险的Payload。 - 尝试盲注:添加
--technique=B参数,指定使用布尔盲注技术进行测试。
- 确认注入点:手动用
问题3:文件上传成功,但访问返回404或403。
- 排查:
- 路径问题:上传成功返回的路径可能是相对路径或绝对路径,仔细查看响应信息。尝试拼接常见的上传目录,如
/uploads/,/images/,/assets/。 - 权限问题:文件虽然存在,但Web服务器用户(如
www-data)没有读取权限。这在靶场中较少见,但真实环境可能出现。 - 解析问题:你的文件后缀可能没有被服务器当作PHP解析。尝试换用其他可解析后缀(
.phtml,.php5),或利用解析漏洞。 - 内容被修改:有些防护系统会清洗上传文件的内容。用webshell连接工具尝试连接,并查看其返回的错误信息。也可以直接浏览器访问该文件,查看源码是否被篡改。
- 路径问题:上传成功返回的路径可能是相对路径或绝对路径,仔细查看响应信息。尝试拼接常见的上传目录,如
问题4:XSS的Payload被过滤或转义了。
- 排查:
- 观察过滤规则:输入
<>script,看输出是<>script还是< >script。前者是HTML实体编码,后者可能只过滤了<和>。尝试使用没有尖括号的Payload,如,或者利用事件处理器。 - 寻找其他输出点:不一定非要在原始输入框。也许在个人资料页的昵称、图片的ALT属性、JSONP回调函数等地方存在未过滤的输出。
- 大小写、双写绕过:尝试 ``,或者
>。
- 观察过滤规则:输入
5.3 建立自己的漏洞检查清单与笔记
最后,也是最重要的一点:养成做笔记的习惯。为每一类漏洞建立一个检查清单(Checklist)。
例如,你的SQL注入检查清单可能包括:
- [ ] 单引号
‘、双引号“测试,观察报错。 - [ ] 逻辑测试
and 1=1/and 1=2。 - [ ] 联合查询测试
union select null,null,...确定列数。 - [ ] 信息收集:
user(),database(),version()。 - [ ] 使用Sqlmap进行深度验证和利用。
- [ ] 尝试盲注Payload:
and sleep(5)测试时间盲注。
你的XSS检查清单:
- [ ] 基础Payload:
,。 - [ ] 事件处理器:``。
- [ ] 伪协议:``。
- [ ] 绕过过滤测试:大小写、双写、编码(HTML, URL, Unicode)。
- [ ] 检查不同上下文:HTML标签内、属性内、JavaScript代码内、CSS内。
将你在Webug和其他靶场上遇到的特殊过滤、绕过技巧、有效Payload都记录在这个清单里。久而久之,这份清单就会成为你大脑的延伸,在面对真实目标时,你能有条不紊地进行测试,而不是盲目地尝试。安全攻防是一场持续的学习和思维博弈,靶场是训练场,而真正的战场需要你带着从这里练就的基本功和思维模式,去谨慎、合法地探索。