Dest0g3 520迎新赛

金歌  金牌会员 | 2022-6-24 02:09:05 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 849|帖子 849|积分 2547

MISC

Welcome to fxxking DestCTF

关注微信公众号,得到flag
Dest0g3{W31c0m3_t0_DestCTF2022!}
Pngenius


题目是一张PNG图片,很难不让人联想到隐写术,我们使用stegsolve打开

在R0G0B0发现了Password for zip,猜测图片包含ZIP,使用foremost进行分解

分解后发现有密码,使用刚刚解出来的密码解压,得到flag

Dest0g3{2908C1AA-B2C1-B8E6-89D1-21B97D778603}
EasyEncode


下载附件,发现是一个有密码的ZIP文件,我尝试了下伪加密,发现并不是,那么只能进行爆破,通过爆破得到密码

使用得到的密码进行解密,得到一串Morse

我们扔进在线网站解密一波,得到一串16进制

将16进制写入文件,发现存在unicode

我们解码一手unicode,得到一串URL编码后的密文

 使用URL进行解码,得到一串base64

解密base64,得到flag

Dest0g3{Deoding_1s_e4sy_4_U}
你知道JS吗

下载发现存在doc特征,故修改后缀为doc打开

打开后我们发现存在是字体混乱

我们直接换一个字体,发现存在base64特征

解密base64,得到如下内容

存在URL特征,我们直接使用URL解码一波,发现如下特殊字符

根据经验,这是brainfuck加密过的,我们直接解密,得到如下字符

看来是16进制,我们写入文件,发现flag

Dest0g3{86facac9-0a5d-4047-b702-86cb37ab77b2}
StrangeTraffic

下载附件,使用小鲨鱼打开这个流量包

追踪TCP,得到如下内容

将内容改为hex转储

发现如下内容,每一个循环的结尾都存在base64一部分



为我们是无脑的工具人,这里就不需要什么脚本辅助了,直接手撸一波,得到密文
  1. RGVzdDBnM3szMUE1QkVBNi1GMjBELUYxOEEtRThFQS0yOUI0RjI1NzEwOEJ9
复制代码
解密base64,得到flag

Dest0g3{31A5BEA6-F20D-F18A-E8EA-29B4F257108B}
EasyWord

解压压缩包,得到如下文件

看看hint.txt,发现password.docm的密码存在掩码攻击,且密码为6位

使用如下脚本获取docm文件的hash

以下脚本来源于
https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/office2john.py

获取到hash,版本之类的,我们去查一下发现2010版本的office的解密代码为9500,删除冗余,得到

使用kali自带的hashcat进行掩码攻击

查看桌面生成的mima.txt,得到密码

使用该密码打开word,发现使用了宏命令

 我们查看宏,发现被加密

先把这个docm的文件解除密码、

然后另存为成doc文档,使用notepad打开

将DPB修改为DPx(区分大小写),然后保存后再次打开,忽略所有的警告,但提示错误

我们重新设置一个密码

点击确定后保存,然后使用notepad打开,将DPx改回DPB,至此,破解密码已完成

再次打开后我们就可以编辑这个宏了,对代码进行简单的分析

我们如下图修改代码

这样相当于反向加密,我们调试时可以修改If为1让程序执行语句
接下来经过调试,我们发现只有这一行是输出最终提示的

我们将它改为1,其它改为0,看看效果

成功输出到了最终的密码(中间省略了一些调试过程,有兴趣的人可以去试试)
随后我们将源码还原到修改前,然后运行,输入密码,得到密码

压缩包密码:2zhlmcl,1hblsqt.
这里问候一下出题人,为什么解压密码后面的是个感叹号呢?
解压得到flag

Dest0g3{VBScr1pt_And_Hashc4t_1s_g00d}
4096


果断启动一波容器,进入容器,在JS中找到一串base64

Base64进行解码,得到另一串base64

 再次解码,得到后半段flag

我们在容器中将favicon.png下载下来,然后使用foremost进行文件分离

使用耳朵听一下wav,发现前面是按键音,中间是SSTV,后面也是按键音,我们用AU处理

将中间的SSTV删除后让两段拨号音拼接

然后使用demf2num进行拨号音识别,得到74958097831

考虑到是拨号,我们将它进行reserve操作,得到出题人手机号13879085947

然后我们听一下中间的SSTV,本菜因为电脑没有声卡,被迫用手机了(软件名:Robot36)

我们按照题目指示的方法,将出题人手机号进行md5,加密,得到最终的解压密码

使用以下密码对压缩包进行解压,得到如下图片

实在是太套了,我们使用gaps+手撸拼出原图(因为gaps精准度堪忧)

把这些base64拼在一起,得到前半段flag
随后我们将前半段flag和后半段flag进行拼接,得到最终的flag
Dest0g3{ed4d114f-9ee4-4ee7-b673-971d81f8b177}
Python_jail

下载题目拿到附件解压

先看看hint

看到中间的空白字符,再结合是一门语言,根据经验想到了无字天书
将password进行无字天书运行,得到密码:a8e15220-7404-4269-812e-6418557b7dc2
URL: https://vii5ard.github.io/whitespace/

使用该密码解压SECRET1.zip,得到一张图片,将它使用stegslove打开
最终在R0G0B0发现Zmxh开头的字符串,疑似flag进行base64编码

解base64得到flag

flag{b5bcfc87-5ca6-43f1-b384-57d09b886ca9}
codegame

下载附件,修改后缀为zip,解压

打开KEYcode

根据经验得知,这段代码是LOLCODE,LOLCODE在线运行
 
URL: https://www.dcode.fr/lolcode-language
运行得到QEFPFPQEBMXPPTLOA,这便是ZIP的密码,我们将Treasure.zip中的docx解压

后缀改为.zip,解压得到fllllllllll1ag.txt

这是emojiAES,同样用QEFPFPQEBMXPPTLOA进行emojiAES解密即可

 但是我们发现解不出来,其实这是出题人留下的坑,我们点击Advanced,调整一下
最终得到了一串16进制(Rotation:4)

将这段16进制使用16进制编辑器打开,得到flag

 flag{9f68f334-017a-4201-92df-dddcc145334d}
rookie hacker-2

非预期解!!!(应该)

使用破空flag查找工具,写一条正则(ip正则:\d+\.\d+\.\d+\.\d+)
然后递归一下Memory.dd,冗余数据战术性不看,结合docker数据是172开头,且172.18.0.2和172.18.0.3是相邻ip,并且在文本中也是相邻的,所以猜测ip就是这俩,结果还真对了,这里给破空flag查找工具打call!
Dest0g3{172.18.0.2_172.18.0.3}
被污染的二维码

首先根据附件名称,修改后缀为zip后解压

先看flag1的16进制,发现是个png文件,但是有意外收获

这里其实都没啥,意外收获就是这个PNG图片为了防止我们使用PS等软件打开,多了一个IDAT块,不清楚是什么用,但是binwalk可以把它分离

我们先修改后缀为png,发现是个反转颜色的二维码,我们使用stegslove反色一下

暂时没什么信息,我们binwalk一下这张图片,发现在里面有一个密码

 
看来是有什么东西需要密码,但是flag1已经处理完了,我们看看flag2,发现是个7Z文件
 
但是实际上这个7z的文件头损坏了,正确的应该是377ABCAF,而它是377AAFBC,将BCAF换位,得到正确的文件
 
将后缀改为7z,然后使用密码解压,得到密文,但是密文长度有问题,猜测有零宽存在
 
我们解密零宽,零宽有很多种,都试试就好了,最后发现是这个Unicode Steganography with Zero-Width Characters (330k.github.io)
 
这里师傅们一定要注意下面的选项

紧接着,我们根据解出来的N-ZA-M猜测是rot13算法,对解出来的长度66字符进行rot13

根据经验判断是base64,解密一下,得到部分flag

那么我们接下来的任务就是找到这四位字符,看来只能处理flag1中的二维码了,我们用QRazyBox加手撸补一下,这里的图片大小是315*315,但是二维码是21*21,所以每15*15代表二维码的一个像素,我们浅浅把我们已知的区域补充一波

(这里运用了推理手法,因为墨水是黑色,只要是15*15像素内存在白色,就一定是白色)
但是经过爆破发现没什么用(乱码了),那就只能继续补下面的灰色,我们瞎蒙一下

这里蒙的肯定不对,但是要知道,这个神奇的玩意是可以大幅度纠正错误的,我们点击tools

点击之后,往下翻,发现它提取出来了

最终的flag出来了
Dest0g3{dcfdffa4-ce19-45cb-902b-df7a152516c7}
CRYPTO

babyRSA


看到q的生成规则,很容易联想到pq相差非常小,使用平方差遍历法直接一把梭哈pq,然后求phi,求d,解密m。脚本如下:
  1. from Crypto.Util.number import *
  2. from gmpy2 import *
  3. e=65537
  4. n=27272410937497615429184017335437367466288981498585803398561456300019447702001403165885200936510173980380489828828523983388730026101865884520679872671569532101708469344562155718974222196684544003071765625134489632331414011555536130289106822732544904502428727133498239161324625698270381715640332111381465813621908465311076678337695819124178638737015840941223342176563458181918865641701282965455705790456658431641632470787689389714643528968037519265144919465402561959014798324908010947632834281698638848683632113623788303921939908168450492197671761167009855312820364427648296494571794298105543758141065915257674305081267
  5. temp=gmpy2.iroot(n,2)[0]
  6. p=gmpy2.next_prime(temp)
  7. q=n//p
  8. print("p =",p)
  9. print("q =",q)
  10. phi_n=(p-1)*(q-1)
  11. d=gmpy2.invert(e,phi_n)
  12. c=14181751948841206148995320731138166924841307246014981115736748934451763670304308496261846056687977917728671991049712129745906089287169170294259856601300717330153987080212591008738712344004443623518040786009771108879196701679833782022875324499201475522241396314392429412747392203809125245393462952461525539673218721341853515099201642769577031724762640317081252046606564108211626446676911167979492329012381654087618979631924439276786566078856385835786995011067720124277812004808431347148593882791476391944410064371926611180496847010107167486521927340045188960373155894717498700488982910217850877130989318706580155251854
  13. m=pow(c,d,n)
  14. print(long_to_bytes(m))
复制代码
Dest0g3{96411aad-032c-20a8-bc43-b473f6f08536}
babyAES


Iv,c,key都给了,直接写个解密脚本就行,白给类题目
  1. from Crypto.Cipher import AES
  2. c=b'C4:\x86Q$\xb0\xd1\x1b\xa9L\x00\xad\xa3\xff\x96 hJ\x1b~\x1c\xd1y\x87A\xfe0\xe2\xfb\xc7\xb7\x7f^\xc8\x9aP\xdaX\xc6\xdf\x17l=K\x95\xd07'
  3. iv=b'\xd1\xdf\x8f)\x08w\xde\xf9yX%\xca[\xcb\x18\x80'
  4. key=b'\xa4\xa6M\xab{\xf6\x97\x94>hK\x9bBe]F'
  5. cipher = AES.new(key,AES.MODE_CBC,iv)
  6. m=cipher.decrypt(c)
  7. print(m)
复制代码
Dest0g3{d0e5fa76-e50f-76f6-9cf1-b6c2d576b6f4}
ezDLP


看到题目不难发现g的值非常之小,使用Pohlig-Hellman算法直接解
Sagemath的discrete_log可以直接求解,脚本如下
  1. y = 199533304296625406955683944856330940256037859126142372412254741689676902594083385071807594584589647225039650850524873289407540031812171301348304158895770989218721006018956756841251888659321582420167478909768740235321161096806581684857660007735707550914742749524818990843357217489433410647994417860374972468061110200554531819987204852047401539211300639165417994955609002932104372266583569468915607415521035920169948704261625320990186754910551780290421057403512785617970138903967874651050299914974180360347163879160470918945383706463326470519550909277678697788304151342226439850677611170439191913555562326538607106089620201074331099713506536192957054173076913374098400489398228161089007898192779738439912595619813699711049380213926849110877231503068464392648816891183318112570732792516076618174144968844351282497993164926346337121313644001762196098432060141494704659769545012678386821212213326455045335220435963683095439867976162
  2. p = 335215034881592512312398694238485179340610060759881511231472142277527176340784432381542726029524727833039074808456839870641607412102746854257629226877248337002993023452385472058106944014653401647033456174126976474875859099023703472904735779212010820524934972736276889281087909166017427905825553503050645575935980580803899122224368875197728677516907272452047278523846912786938173456942568602502013001099009776563388736434564541041529106817380347284002060811645842312648498340150736573246893588079033524476111268686138924892091575797329915240849862827621736832883215569687974368499436632617425922744658912248644475097139485785819369867604176912652851123185884810544172785948158330991257118563772736929105360124222843930130347670027236797458715653361366862282591170630650344062377644570729478796795124594909835004189813214758026703689710017334501371279295621820181402191463184275851324378938021156631501330660825566054528793444353
  3. g = 19
  4. x = discrete_log(mod(y, p), mod(g, p))
  5. print(x)
复制代码
可以得到输出
627467212751652661100750674849894892358409405070345081253130721039787502632741519936253501608002590652971133
print之后使用Crypto库的long_to_bytes直接求解flag
Dest0g3{07ed2a6f-182f-a05d-c81e-1318af820a78}
ezStream

脚本如下,思路在注释里
  1. from gmpy2 import invert
  2. from Crypto.Util.number import *
  3. a = 3939333498
  4. b = 3662432446
  5. m = 2271373817
  6. state1 = 17362
  7. state2 = 20624
  8. c = 600017039001091357643174067454938198067935635401496485588306838343558125283178792619821966678282131419050878
  9. state1_ = state1 << 16
  10. def next(seed):
  11.     seed_new = (a * seed + b) % m
  12.     return seed_new >> 16,seed_new
  13. # 爆破低16位得到可能的state1的真实值
  14. # for i in range(2**16):
  15. #     t = state1_ + i
  16. #     if (a * t + b) % m >> 16 == state2:
  17. #         print(t)
  18. t_list = [1137839988,1137855425,1137870862]
  19. # 求出可能的seed
  20. for i in t_list:
  21.     seed = (i - b) * invert(a,m)%m
  22.     print(seed)
  23. seed_list = [1315807869,710396196,104984523]
  24. c_bytes = long_to_bytes(c)
  25. print(len(c_bytes))
  26. key_list = []
  27. seed = 104984523
  28. for i in range(47):
  29.     key,seed = next(seed)
  30.     key_list.append(key%10)
  31. for i in range(45):
  32.     print(chr(key_list[i+2]^c_bytes[i]),end='')
  33. # 这道题并不需要求seed,拿到t_list之后递推就可以了
复制代码

RESERVE

simpleXOR

拿到题目,使用IDA打开,观察函数,就是道签到题,随便写个脚本xor一下


这里贴下脚本
  1. a=[179,145,130,128,195,155,206,117,207,156,154,133,133,205,184,132,170,125,189,187,177,181,150,113,141,158,134, 191, 115,168,163,156,131,101,158,87]
  2. for i in range(len(a)):
  3.     print(chr((a[i]^0xf7)-i),end="")
复制代码
Dest0g3{0bcgf-AdMy892-KobPW-hB6LTqG}

hi


v6是密文,v5是输入的flag*23,可以直接查看x,flag长度是45,我们放一下
  1. enflag=[0x97, 0x64, 0x48, 0xC6, 0x1C, 0x7A, 0x8E, 0x9F, 0x46, 0xBD,
  2.   0x60, 0xE7, 0x82, 0xF3, 0xEE, 0x69, 0x49, 0xF7, 0x0E, 0xE3,
  3.   0xE2, 0x17, 0xC0, 0xB9, 0x2C, 0x39, 0x30, 0xA4, 0x48, 0x01,
  4.   0x41, 0x98, 0x39, 0xA9, 0xB5, 0xE5, 0x11, 0x74, 0x0E, 0xE8,
  5.   0xAC, 0xFD, 0x8B, 0xA5, 0x6D
  6. ]
  7. x=[  0x7B, 0x51, 0xF3, 0x5A, 0xCC, 0x39, 0xF9, 0x92, 0x1C, 0x9E,
  8.   0x58, 0x69, 0x9D, 0xF7, 0xFD, 0x4A, 0x3E, 0xFB, 0x1D, 0x2C,
  9.   0x4D, 0x0C, 0x70, 0xB1, 0x3B, 0x8D, 0x25, 0xED, 0x91, 0xB1,
  10.   0x73, 0x8D, 0x82, 0xE6, 0xE7, 0x50, 0x20, 0x61, 0x62, 0x3C,
  11.   0x00, 0x3A, 0xA6, 0x9D, 0x32]
  12. for i in range(45):
  13.     for j in range(0,128):
  14.         v5=23*j
  15.         if(v5+x[i])&0xff==enflag[i]:
  16.             print(chr(j),end="")
复制代码
Dest0g3{f982cd79-d7a3-0874-aa0b-a5b37e4445c8}
WEB

phpdest


 
拿到题目,我们使用伪协议配合多级符号链接的办法进行绕过
/proc/self指向当前进程的/proc/pid/,/proc/self/root/是指向/的符号链接,所以我们可以用上述方法进行绕过,接下来放出payload
  1. ?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
复制代码
使用以上payload,成功得到flag.php的base64加密后的结果

 
我们果断解密一手base64,得到flag

动态flag,请自己参悟flag是什么
EasyPHP


拿到题目,我们发现需要post字符串和数组拼接,即ctf[]=shumu(shumu可以改)

接下来,我们再来看一看,神奇的事情就发生了

动态flag,请自己参悟flag是什么
SimpleRCE

看到源码,我们大体就知道了考点是无字母数字绕过正则表达式,这里我们用了取反,因为取反,用的基本是不可见字符,不会触发到正则表达式,我们写一个php脚本
[code]
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表