pigctf期末测评

MISC 1

拿到图片,先binwalk一下,如下图

果然发现png图片后面跟了个ZIP,然后提取出来打开发现了一个flag.png,然后查看16进制文件没有发现什么问题,之后查看属性发现分辨率为986_470,但是大小为200kb左右,显然是不相匹配的,通过16进制编辑器修改分辨率为986_1376,然后在图片的左下角发现flag,

FLAG{5mall_L1_15_5tup1d}

MISC 2

http://drops.wooyun.org/tips/7828 一道CBC字节翻转攻击问题

    <?php
        $enc = "S9PsFp43k9VgyrggRHLbISjUAjwzSSPPajrF9Dzz0o/ieSZbxwGjTJ5xhAZEi5tDBjvwsQtH0BynlLC0p0F0zOZMx25M6iekcLvX//MNKSA=";
        $enc = base64_decode($enc);
        echo "<br>".($enc)."<br>";
        $enc[47] = chr(ord($enc[47]) ^ ord("9") ^ ord ("1"));
        echo "<br>".($enc)."<br>";
        $c = base64_encode($enc);
        $d = urlencode($c);
        echo "Plaintext after attack : <br>$c<br>";
        echo "Plaintext after attack : <br>$d<br>";
        $e = @decrypt(base64_decode($c));
        $uid = substr($e,strpos($e,"uid")+4,1);
        echo 'uid:'.$uid.'<br/>';
        if ($uid == 1){
                echo "<br>get the flag!!!";
        }
        else {
                echo "false!";
        }
?>

得到翻转后的密文的base64加密值: S9PsFp43k9VgyrggRHLbISjUAjwzSSPPajrF9Dzz0o/ieSZbxwGjTJ5xhAZEi5tLBjvwsQtH0BynlLC0p0F0zOZMx25M6iekcLvX//MNKSA=

修改COOKIE之后提交得到flag,

WEB 1

根据注释的提示,网页的源码由于使用extract,故存在变量覆盖,然后直接提交get请求http://45.78.61.235/web1/?auth=1,转到了一个新的页面,然后再响应头里面发现了flag

WEB 2

进入页面,看了源码、请求等待都没发现东西,然后试试robots.txt,也没有,然后想到备份文件,加上’~’发现了源码如下:

    <?php
    function checkIN($number){
        for($i = 0; $i < strlen($number); $i++){
            $dig = ord($number[$i]);
            if(($digit >= ord('1')) && ($digit <= ord('9'))){
                return false;
            }
        }

        return $number == '3722304989';
    }


    if(eregi("hacker", $_GET[id])){
        echo("<p> not allowed!</p>");
        exit();
    }

    $_GET[id] = urldecode($_GET[id]);
    echo $_GET[id];
    if($_GET[id] == "hacker" && checkIN($_GET[num])){
        echo "<p> Access granted! </p>";
        echo "<p> flag:flag xxxxxxxxxxxxxxxxxx";

    }
?>

<br><br>
can you bypass it???

阅读之后判断是松散比较,构造下属请求如下: http://45.78.61.235/web2/index.php?id=%2568%2561%2563%256B%2565%2572#=0xdddddddd 得到flag为 flag{Your_are_a_g00d_PHP_learner!}

REV 1

首先通过OD的关键字查找,发现了文本参考字串”wrong”

对该行附近的字串进行查看,发现跳转和获取输入的关键代码

通过输入,不同的数据,发现该算法实现的功能是将一段输入进行位置调换后异或,然后与程序自带文本进行比较。

通过几次实验输入,得到调换顺序和异或对象(斐波那契数列)。 得到最终结果:flag{H4ppyRev!}