BUU-WEB-[WUSTCTF2020]朴实无华

[WUSTCTF2020]朴实无华

在这里插入图片描述
点开网页,就是让咱hack它~~(这么无理的要求满足你)~~ ,查看源码,看看有没有其他提示。
在这里插入图片描述
发现乱码了,于是利用火狐修改一下编码方式。(按alt键)
在这里插入图片描述
在这里插入图片描述
bot,难道是robot协议。先查看一下吧。
在这里插入图片描述
找到了个爬虫爬不到的网页,进去看一看。
在这里插入图片描述
这题要是那么简单就好了
源码里也没有提示,抓个包看一下吧。
在这里插入图片描述
又找到了页面。
(老样子,乱码转成unicode就不乱了)

<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);


//level 1
if (isset($_GET['num'])){
    $num = $_GET['num'];
    if(intval($num) < 2020 && intval($num + 1) > 2021){
        echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
    }else{
        die("金钱解决不了穷人的本质问题");
    }
}else{
    die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
   $md5=$_GET['md5'];
   if ($md5==md5($md5))
       echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
   else
       die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
    die("去非洲吧");
}

//get flag
if (isset($_GET['get_flag'])){
    $get_flag = $_GET['get_flag'];
    if(!strstr($get_flag," ")){
        $get_flag = str_ireplace("cat", "wctf2020", $get_flag);
        echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
        system($get_flag);
    }else{
        die("快到非洲了");
    }
}else{
    die("去非洲吧");
}
?>
去非洲吧

(他让我去非洲????这是人干的事???)
level1:
以get方法传入num变量,获取num的整数值,比2020小,+1后比2021大。
这里通过科学计数法进行绕过。

num=1e5

前一个intval截取到num=1,+1后变成数值量。
在这里插入图片描述
绕过了第一层。
level2:
md5弱相等。借助0e绕过。
(这里就不多讲了,百度一大堆,随便用一个0e)
在这里插入图片描述
成功进入第三层。
level 3:
第三层就有点意思了,简单分析一下:
1.以get方式传入参数get_flag。
2.get_flag中不能有空格。
3.get_flag中不能有cat。
如果能传入就会被执行。首先执行一下ls。
在这里插入图片描述
可以看到flag在哪里,但是cat被禁了,所以用tac。
然后就是解决空格问题,采用$IFS$7进行绕过。(数字可以任意替代)
在这里插入图片描述
成功绕过拿到flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值