i春秋-“百度杯”CTF部分Writeup

作者: 分类: CTF 时间: 2016-09-03 评论: 暂无评论

i春秋-“百度杯”CTF

code

似曾相识有没有 XD
访问?jpg=index.php,base64解一下,拿了一下index.php源码,发现phpstorm写的

index.php.png

index-source.png

扫一下目录发现workspace.xml,从里面得知flagfl3g_ichuqiu.php

dir.png

flagfilename.png

同index.php一样拿下源码,这里的_config来构造=>?jpg=fl3gconfigichunqiu.php

flagfile.png

分析一下,需要先求得用system进行加密的字串,然后丢到cookie里去,但是并不知道$key是什么,估计是在config.php里面。仔细看了一下,可以把guest的ASCII加10与结果进行异或可以得到前5为md5,而system需要6位,剩下一位靠猜。

我选了一组比较base64解开是明文的,来搞比较方便:

user=WE5tc0VKVklI

base64decode:
XNmsEJVIH

前面4位是rnd,后面5位是guest的ASCII加10后和md5的前5位异或,我们可以求出前5位md5是45946,然后最后用字母和数字补上一位,写个脚本跑一下就出来了,

5MD5.png

下面是自己写的测试php,为了方便代码写得比较随意,自行结合源码看..

<?php
$txt='EJVIH';
$rnd='XNms';
$username='guest';
for($i=0;$i<strlen($username);$i++){
    $tmp .= chr(ord($username[$i])+10);
}
for($i=0;$i<strlen($txt);$i++){
    $ttmp .= $txt[$i] ^ $tmp[$i];
}
echo $ttmp;
$l='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
for($c=0;$c<strlen($l);$c++){
    echo '<br />';
    $tmp='';
    $ttmp='';

    $txt='45946'.$l[$c];
    echo $txt;
    $rnd='XNms';
    $username='system';
    for($i=0;$i<strlen($username);$i++){
        $tmp .= chr(ord($username[$i])+10);
    }
    for($i=0;$i<strlen($txt);$i++){
        $ttmp .= $txt[$i] ^ $tmp[$i];
    }
    #echo $ttmp;
    echo "<br />";
    echo base64_encode($rnd.$ttmp);
}
echo md5($rnd.$key);
?>

跑一下脚本得到flag,这里因为每次下发题目flag都会变,但是解题一样

getflag.png

标签: CTFPHP

声明:文章基本原创,允许转载,但转载时必须以超链接的形式标明文章原始出处及作者信息。

添加新评论