Pikachu靶场之URL重定向解

Pikachu靶场之URL重定向详解

思考和闯关

进入本关页面显示如下,有4个链接
在这里插入图片描述
依次点击查看,发现第一个和第二个网页无变化

点击第三个网页跳转到概述页面

在这里插入图片描述
点击第四个页面,发现网站有个?url=i

在这里插入图片描述
接下来有两种方法可以找到漏洞位置

(1)右键 查看网页源代码

找到上图四个链接的位置,可以发现url重定向是通过 urlredirect.php?url= 来实现的

拼接当前页面url之后,完整的payload是:http://ip:port/pikachu/vul/urlredirect/urlredirect.php?url=xxx

ip、port、xxx根据自己情况写
在这里插入图片描述

(2)通过burpsuite抓包

HTTP状态码302表示重定向
在这里插入图片描述
上图第3个request报文的具体内容如下,由此也可得到payload

在这里插入图片描述
重定向后转向的是/pikachu/vul/urlredirect/unsafere.php

在这里插入图片描述
尝试一下漏洞利用:

浏览器地址栏输入http://ip:port/pikachu/vul/urlredirect/urlredirect.php?url=http://www.baidu.com

页面跳转到了http://www.baidu.com

在这里插入图片描述

原因和防御

为什么会有这个漏洞呢?还不是因为用户可控的参数没有被好好过滤。

本关代码中与漏洞有关的节选如下,当url参数的值不为i时,就会跳转到url值表示的页面(23行)
在这里插入图片描述
试着防御一下,修改一下if else语句分支(22~25行),如果url的值为unsafere.php,则跳转到unsafere.php,如果url的值不为i,也不为unsafere.php,则留在当前页面,并提示“非法地址!”
在这里插入图片描述
在浏览器地址栏输入之前使用的payload,页面没有跳转,并提示非法地址。
防御成功
在这里插入图片描述

URL跳转的几种方式

对于URL跳转的实现一般会有几种实现方式:

META标签内跳转
javascript跳转
header头跳转

html中使用META标签内跳转

<head>

<!-- 以下方式只是刷新不跳转到其他页面-->

<meta http-equiv="refresh" content="10">

<!-- 以下方式定时转到其他页面 -->

<meta http-equiv="refresh" content="5;url=hello.html">

</head>

javascript跳转

//window.location.href方式
 <script language="javascript" type="text/javascript">
           window.location.href="target.aspx"; 
    </script>

//window.navigate方式跳转
<script language="javascript">
    window.navigate("target.aspx");
</script>

//window.loction.replace方式实现页面跳转
<script language="javascript">
    window.location.replace("target.aspx");
</script>

//self.location方式实现页面跳转
 <script language="JavaScript">
          self.location='target.aspx';
   </script>

//top.location
 <script language="javascript">
          top.location='target.aspx';
   </script>

//window.history.back
<script language="javascript">
    alert("返回");
    window.history.back(-1);
   </script>


PHP
php中header函数可实现跳转,当然其他服务器端编程语言都可以实现例如java web的redirect等等。

<?php

//重定向浏览器

header("Location: http://bbs.lampbrother.net");

//确保重定向后,后续代码不会被执行

exit;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值