buu-7

[GUET-CTF2019]虚假的压缩包

image-20210723211338559

一真一假,亦真亦假,都解开就知道了

虚假压缩包伪加密,打开

image-20210723211601096

呆滞,rsa

rsa算法

RSA算法的具体描述如下:

https://blog.csdn.net/dbs1215/article/details/48953589

公钥 (E,N)
私钥 (D,N)
密钥对 (E,D,N)
加密 密文=明文EmodN密文=明文EmodN
解密 明文=密文DmodN
求N N= p * q ;p,q为质数
求L L=lcm(p-1,q-1) ;L为p-1、q-1的最小公倍数
求E 1 < E < L,gcd(E,L)=1;E,L最大公约数为1(E和L互质)
求D 1 < D < L,E*D mod L = 1
1
2
3
4
5
6
7
8
9
10
11
12
import gmpy2

p = 3
q = 11
e = 3
c = 26
n = 33
s = (p- 1) * (q - 1)
d = gmpy2.invert(e,s)#求逆元
m = pow(c,d,n)#函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。

print(pow(c, d, n))

这题算出来是5,感觉真实压缩包密码应该就是5了,结果。。。。竟然不对,

压缩包密码是答案是5(这就是脑袋题吗

image-20210723234154830

目测修改图片高

image-20210723235419873

异或5?

再看一下亦真亦假,十六进制

image-20210723235746824

但是不知道是什么,总不会异或整份文件吧

1
2
3
4
5
6
7
8
9
10
f1 = open('1','r')
xor_data = f1.read()
f1.close()
dec_data = ""
for i in xor_data:
tmp = int(i,16) ^ 5#int默认十进制
dec_data += hex(tmp)[2:]#两位字符作为一个十六位进制数
f2 = open('./data.doc','wb')#创建一个可读写文件
f2.write(dec_data.decode('hex'))
f2.close()

image-20210724001105669

开护眼模式的好处(手动滑稽)

[SUCTF 2019]Game

一张图,一个源码

image-20210724132616632

很遗憾,这个base32转出来的flag是假的

问题应该是在图里

看了题解才知道

image-20210724134046594

我真去找了,

这个代码真的有可读性吗。。。。。。。。。。。(眼睛已瞎

image-20210724132253801

藏得也太深了吧

图里lsb隐写

image-20210724134437432

你看这个像不像base64(压根解不出来

根据U2FsdGVkX1我们知道是DES加密,因为DES加密之后开头都是这几位,不过解密需要秘钥。

秘钥啊,那猜一下假的flag好了,再不行猜个比赛名称什么的

image-20210724140927183

我在官方wp里看了些什么。。。

image-20210724151059663

image-20210724141147088

绝了,注意,这里是3des也就是tripeDES

[ACTF新生赛2020]明文攻击

图片隐藏着明文flag的zip,记得修一下文件头,然后image-20210724153613679

我也想知道他会不会真的攻击一个小时

[MRCTF2020]不眠之夜

看了一下,把图片拼起来

image-20210724153832749

1
2
montage *jpg -tile 10x12 -geometry 200x100+0+0 flag.jpg 
gaps --image=flag.jpg --generations=40 --population=120 --size=100

因为是在kali上安装,我这里montage自带了,所以就放个https://github.com/nemanja-m/gaps的链接

按照步骤来就行

Option Deion
–image 指向拼图的路径
–size 拼图块的像素尺寸
–generations 遗传算法的代的数量
–population 个体数量
–verbose 每一代训练结束后展示最佳结果
–save 将拼图还原为图像

可以来看看这个https://cloud.tencent.com/developer/article/1120042

[MRCTF2020]Hello_ misc

image-20210724160600568

红色通道有图片

image-20210724160641776

压缩包密码,压缩包也在红色的图里

解压缩

image-20210724161018947

感觉是rgb色块,但是36个色块,也不可能是图片了(虽然但是,我还是去画了

image-20210724162838504

解密压缩包,得到:一个只包含127 255 63 191的TXT文件,正经解法应该是转换成二进制然后取前两位重组。

1
2
3
4
5
6
7
8
9
10
11
12
13
with open('out.txt') as a_file:
content = [x.strip() for x in a_file.readlines()]# 去除空格
bins = []
for i in content:
bins.append(bin(int(i))[2:].zfill(8)[:2]) #bin为转为二进制数开头为0b,这里通过[2:]来删除;zfill()返回指定长度的字符串,原字符串右对齐,前面填充0。在这里指定长度为8,取前两位
stringBins = ''.join(bins) #将序列中的元素以指定的字符连接生成一个新的字符串。这里''表示直接连接
num = 0
flag = ''
for i in range(int(len(stringBins)/8)):
flag+=chr(int(stringBins[num:num+8],2))#8个数字转为一个字母,int默认十进制,这里为二进制需标注
num+=8

print(flag)

得到rar-passwd:0ac1fe6b77be5dbe

image-20210724171551913

image-20210724171816937

吐了,这题目

这离谱的玩法

[SWPU2019]Network

上一题类似的操作,不过总算知道这到底是是什么操作了

TTL隐写https://www.cnblogs.com/yunqian2017/p/14671031.html

TTL隐写

1
2
3
4
IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1,当TTL为0的时候,该报文就会被丢弃。
TTL所占的位数是8位,也就是0-255的范围,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发,
远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据。
如:须传送H字符,只需把H字符换成二进制,每两位为一组,每次填充到TTL字段的开头两位并把剩下的6位设置为1(xx111111),这样发4个IP报文即可传送1个字节。

因为写出来是一个压缩包的hex码,so上一题的脚本其实改一改就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import binascii
with open('attachment.txt') as a_file:
content = [x.strip() for x in a_file.readlines()]
bins = []
for i in content:
bins.append(bin(int(i))[2:].zfill(8)[:2])
#print(bins)
stringBins = ''.join(bins)
num = 0
flag = ''
for i in range(int(len(stringBins)/8)):
flag+=chr(int(stringBins[num:num+8],2))
num+=8

print(flag)
flag = binascii.unhexlify(flag)
wp = open('ans.zip','wb')
wp.write(flag)
wp.close()

关于binascii.unhexllify()可以看看这篇文章https://200ok.ch/posts/2018-12-09_unhexlify.html

伪加密,然后flag.txt是个base64套娃,来个脚本

1
2
3
4
5
6
7
8
9
import base64
f=open("flag.txt","r")
a=f.read()
#print(f,a)
res=base64.b64decode(a)

while(1):
res=base64.b64decode(res)
print(res)

[UTCTF2020]file header

补png文件头,flag在图上

[BSidesSF2019]zippy

题目说的这么明白了,反手就把流量包里的压缩包分离出了,尝试弱密码未果,确定是真加密,在流量包找到密码,over

image-20210724221204671

解完就行

[MRCTF2020]Unravel!!

image-20210724223643837

先看文件尾,image-20210724224008868

目测des或aes,JM.png图片分离可以得到秘钥,用来解win-win.zip然后

image-20210724224136176

silent,好久没用了,有亿点点没想到

[UTCTF2020]basic-forensics

jpeg后缀,010打开发现是文本,直接搜flag,结束

[WUSTCTF2020]spaceclub

image-20210724225503193

真看不出来

image-20210724225542091

你看它短短长长的样子像不像莫斯,试了前面,发现分割是个问题

短的换成0,长的换成1

image-20210724232824574