题目地址:http://ddctf.didichuxing.com/challenges

 

(╯°□°)╯︵ ┻━┻

这道题目比较靠脑洞,说实话不是很有意思….卡了挺久。。

>>> Text = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1b2e2e5e2b5b4e4b8b7e6e1e1b6b9e4b5e3b8b1b1e3e5b5b6b4b1b0e4e6b2fd"
>>> hex = ""
>>> res = ""
>>> for i in Text:
	num  += 1
	hex=hex+i
	if (num%2==0):
		res = res+chr(eval("0x"+hex)%128)
		hex=""

		
>>> res
'That was fast! The flag is: DDCTF{9a2beb54d87faa69d5c811ce56410df2}'

第四扩展FS

可以下载到一个图片,图片体积过大,我当时是直接丢到http://exif.regex.info/exif.cgi   查看有没有啥信息,但是没找到什么。


后来通过foremost提取出了隐写在里面的压缩包。

拖回windows。压缩包存在密码,其实密码就是图片信息中的注释(XP comment) :Pactera
根据提示,统计词频。

这里我使用python3的nltk来处理

>>> import nltk
>>> with open("G:\\1常用\\0day\\DDCTF\\misc\\file.txt") as f:
	text = f.read()

	
>>> res = nltk.FreqDist(text)
>>> for k,v in res.most_common():
	print(k,end="")

	
DCTF{YIlitareNgohGy1n9}

流量分析

这道题目比较简单,wireshark载入pcap后,搜索smtp协议,可以找到传输图片的包

拖出来Base64解密一下,图片里面就是密钥内容了。用OCR识别一下,然后

再搜索SSL协议,在明文的text中即可获得flag

安全通信

这道题目比较有意思,阅读了源码后,发现解题思路就是客户端输入payload,经过AES的分块加密来爆破到已加密的部分。

具体思路可见:https://michael-myers.github.io/blog/post/enigma2017-broken-encryption-writeup/

这题目手撸太蛋疼了,用python2写了个脚本

#!/usr/bin/python
import telnetlib

guessed_secret = ""
chosen_plaintext= bytearray()
for secret_bytes_to_guess in range(0, 64):
    chosen_plaintext.insert(0, "?")

    for guessed_byte in range(0x20, 0x7E):
        chosen_plaintext[0] = chr(guessed_byte)
        tn = telnetlib.Telnet("116.85.48.103", 5002, timeout=3)
        tn.read_until(b"Please enter mission key:")
        tn.write("2acba569d223cf7d6e48dee88378288a" + "\r\n")
        tn.read_until(b"Please enter your Agent ID to secure communications:")
        tn.write("12345678"+str(chosen_plaintext.decode('ascii'))+"}"+"\x00"*15+"\r\n")
        print str(chosen_plaintext.decode('ascii'))+"}"

        res = tn.read_until("Please send some messages to be encrypted, 'quit' to exit:")

        #print res
        #print res[65:97]
        #print res[161:193]
        #print res[193:224]
        #print res[225:257]


        if res[65:97] == res[225:257]:
            print "Guessed a byte of the secret: " + chr(guessed_byte)
            guessed_secret = chr(guessed_byte) + guessed_secret
            break

 

把 mission key改成自己的应该就可以了。复现懒得跑完了。





本文链接地址: DDCTF2018 Misc1-5 writeup

原创文章,转载请注明: 转载自Lz1y's Blog

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.