BUU-WEB-[WUSTCTF2020]朴实无华

[WUSTCTF2020]朴实无华

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


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 "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.
"
; }else{ die("金钱解决不了穷人的本质问题"); } }else{ die("去非洲吧"); } //level 2 if (isset($_GET['md5'])){ $md5=$_GET['md5']; if ($md5==md5($md5)) echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.
"
; 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 "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.
"
; system($get_flag); }else{ die("快到非洲了"); } }else{ die("去非洲吧"); } ?> 去非洲吧

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

num=1e5

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

你可能感兴趣的:(BUU-WEB)