CTF之MISC练习一渗透测试中心

FileFormat:文件格式,这个主要是查看图片的具体信息

DataExtract:数据抽取,图片中隐藏数据的抽取

FrameBrowser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看

ImageCombiner:拼图,图片拼接

3.将静态图片截图保存下,使用phoshtop工具修复二维码图片,然后进行扫描

writeup:

1.用jd-gui打开,直接搜索:flag

得到ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9

4.base64解密

flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}

八、pdf隐写之摩莫斯密码writeup:1.通过谷歌浏览器打开pdf文件,然后复制文字内容到text文字中

这里需要一些关于正常文件编码的知识:

jpg图像开始标志:FFD8结束标志:FFD9

gif图像开始标志:474946383961结束标志:0101003B

4.修改后缀名为.gif,利用Stegsolve中的framebrower分解成两个图片然后用底下的左右箭头选择图层分离出二维码得到两张不全的二维码

5.由题可知为双层图,用ps打开分离图层后保存

(具体步骤:点击图层-复制图层-确定,再点击文件-储存-保存)

ps全二维码,扫描得到flag:flag{yanji4n_bu_we1shi}

1.压缩源文件数据区:

2.压缩源文件目录区:

压缩源文件目录结束标志:

504B0506:目录结束标记0000:当前磁盘编号0000:目录区开始磁盘编号0100:本磁盘上纪录总数0100:目录区中纪录总数5B000000:目录区尺寸大小100E0000:目录区对第一张磁盘的偏移量0000:ZIP文件注释长度

然后就是识别真假加密1.无加密压缩源文件数据区的全局加密应当为0000且压缩源文件目录区的全局方式位标记应当为00002.假加密压缩源文件数据区的全局加密应当为0000且压缩源文件目录区的全局方式位标记应当为09003.真加密压缩源文件数据区的全局加密应当为0900且压缩源文件目录区的全局方式位标记应当为0900writeup:

1.这题全局为0000但是在结尾发现是0900,所以为假加密,把0900改成0000就能解压打开文件了。

1.使用wireshark分析,在wieshark中的编辑---查找分组--分组详情,字符串,中搜索字符串,flag.txt,进行查找分析

5.FFD8FF是jpg文件的文件头,附上各类图的文件头:

6.把以FFD8开头、FFD9结尾的这部分复制,并在winhex中新建文件并粘贴,注意粘贴格式选择为ASCIIHex(建议先全选复制到记事本然后删去头尾比较方便),放到winhex里面新建一个文件,以ASCIIHex的形式复制进去,保存为jpg文件

$gccflag.c-oflag

$./flag

inputstring:

warning:thisprogramusesgets(),whichisunsafe.

ba1f2511fc30423bdb

result:

bdb32403cf1152f1ab

题目:

rc4的key为,welcometoicqedu

加密密码为:UUyFTj8PCzF6geFn6xgBOYSvVTrbpNU4OF9db9wMcPD1yDbaJw==,求明文

writetup:

1.通过python脚本解密

importrandom,base64fromhashlibimportsha1defcrypt(data,key):x=0box=range(256)foriinrange(256):x=(x+box[i]+ord(key[i%len(key)]))%256box[i],box[x]=box[x],box[i]x=y=0out=[]forcharindata:x=(x+1)%256y=(y+box[x])%256box[x],box[y]=box[y],box[x]out.append(chr(ord(char)^box[(box[x]+box[y])%256]))return''.join(out)deftdecode(data,key,decode=base64.b64decode,salt_length=16):ifdecode:data=decode(data)salt=data[:salt_length]returncrypt(data[salt_length:],sha1(key+salt).digest())if__name__=='__main__':data='UUyFTj8PCzF6geFn6xgBOYSvVTrbpNU4OF9db9wMcPD1yDbaJw=='key='welcometoicqedu'decoded_data=tdecode(data=data,key=key)printdecoded_data

最终得到flag:flag{rc4_l_keepgoing}

1.使用winhex打开,查看前后没有什么信息,使用ctrl+f查找关键字flag,找到答案

听说这是某个数据库的泄漏的重要数据,25d55ad283aa400af464c76d713c07ad,试着找出原始key吧。flag{key}

1.数据库泄露的重要数据?那猜想应该是md5加密,且了解字符的话就会知道是MD5,所以在线MD5解密

1.根据题目内容,猜测是rot13解密,那么通过在线工具

2.离线工具crackt00ls工具进行解密

..-..-...---..--....-----.-..-.....-.-.-..-....---...-..-...----.-....-....--....-...---....-----....-----.....---....-.----.-..-.---..-....--...---..---...----..-.-------...

flage71ca5cd-7db9-4ba3-9383-1af867881f072.最终得到flag:flag{e71ca5cd-7db9-4ba3-9383-1af867881f07}二十四、栅栏密码题目:

山岚,f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c}

1.根据题目内容山岚和栅栏谐音,猜测是栅栏加密,通过crackt00ls工具进行解密,其中字符就包含了flag,那么确认猜测没错。

基础知识:

它也是定义了用可打印字符表示二进制文字一种方法,不是一种新的编码集合。XXEncode将输入文本以每三个字节为单位进行编码,

如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,

以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。它64可打印字符固定字符范围及顺序!

包括大小写字母、数字以及+-字符。它较UUEncode编码优点在于它64字符是常见字符,没有任何特殊字符!

Xxencode编码原理:

XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。以所对应值的位置字符代替。它所选择的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符。跟base64打印字符相比,就是uuencode多一个“-”字符,少一个”/”字符。但是,它里面字符顺序与Base64完全不一样。与UUencode比较,这里面所选择字符,都是常见字符,没有特殊字符。这也决定它当年流行使用原因!

每60个编码输出(相当于45个输入字节)将输出为独立的一行,每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是“h”这个字符(45,刚好是64字符中,第45位'h'字符),最后一行的长度字符为剩下的字节数目在64字符中位置所代表字符。

问题:uuencode编码转换为xxencode编码怎么样操作?从编码原理来看,几乎一样。就是所用的64个字符不一样。一次,简单对uuencode转换后字符,逐位(处理'`'字符)减去32,然后得到一个值。这个值在xxencode64字符中所对应位置字符替换即可。

XXencode编码转换过程:

字符串:'Cat‘编码后是:Eq3O

1.根据题目名称xx,可将xxencode编码转ascii

我喜欢贝丝,但是贝丝的表妹喜欢我

还给了我一封情诗

MZWGCZ33MVZGQZLJL5STQOJTGRPWK4SVJ56Q====

base家族有base64,base32,base16

1.Base16编码是包含了数字(0~9)和大写字母(A~F),Base32编码与Base64编码最大区别是前者没有小写字母.Base32编码可以用于文件系统的名称(不区分大小情况).而Base64编码后数据量相比原先不是增加很多,可以用于网络传输.

2.根据特征是base32

3.那么可以通过在线工具进行解密

方方格格,不断敲击

“wdvtdzqsxdrwerdzxcesxcfruygbn”

flag格式为:flag{小写的字符串}

1.根据提示我们可以猜到这个是采用了键盘拼写方式得出的键盘布局图形样式:(这块最好用画按照键盘画好)

wdvtdzx

qsxdrv

werdzxcz

esxcfro

uygbnc

2.最终组合起来为:xvzoc

flag为:flag{xvzoc}

低频ID卡数据格式转换小常识

将下列16进制串中倒数第5,6位转换为3位十进制数,

将最后4位转换为5位十进制卡号,中间用“,”分开。

0000944664

1.根据提示,先将十六进制94转换为十进制148,然后再将十六进制4664转换成十进制18020

它们之间以逗号分隔,最终组合得到,前面000需要去掉。

2.最终获得flag:

flag{148,18020}

让我们回到最开始的地方

011001100110110001100001011001110111101101100011011001010011001101100101001101010011000000110010011000110010110100110100001110000110001100111001001011010011010001100100001101010011000000101101001110010011100100111001001100000010110100110101011000100011100000110001011001000110001000110110011001100110001101100010011001100011000001111101

1.通过在线工具进行解密

有一天,表姐的好朋友贝丝远房的表亲,一个16岁的少年

给表姐递了一封情书,表姐看不懂,你能帮忙翻译下吗?

666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D

1.根据题目含义16岁少年,并且是含有贝丝,猜测为base16解密

2.通过在线工具进行解密

题目内容:

flag{ichunqiu_=E6=8A=80=E6=9C=AF=E6=9C=89=E6=B8=A9=E5=BA=A6}

Quoted-printable可译为“可打印字符引用编码”、“使用可打印字符的编码”,我们收邮件,查看信件原始信息,经常会看到这种类型的编码!

任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值

麻辣烫的标配。flag{abbab_babbb_baaaa_aaabb}

1.根据题目内容包括abab循环,从特征上看是培根密码,这里需要将下划线去掉,最终得到:abbabbabbbbaaaaaaabb

2.通过在线解密工具,即可获得flag

哒哒哒哒,你知道什么是键盘坐标密码吗?

11213118273334

flag格式:flag{*****

我们注意到大键盘区所有的字母上面都有其对应的数字,这个位置几乎在所有的键盘都是相同的。所以我们可以利用这一点应用单表替换的方法进行加密[注2]:

1234567890

QWERTYUIOP

ASDFGHJKL

ZXCVBNM

我们根据上表可以得出,Q是1下面的第一个,A是1下面的第二个……以此类推,每一个字母都会有其对应的数字:A12B53C33第一个数字代表横向(X坐标)的位置,第二个数字代表纵向(Y坐标)的位置

根据上面对应表,可获得flag:

flag{QAZIJCV}

贝克街旁的圆形广场

·-··-··-··-··-··-··

1.题目给的这种字符一般解不出·-··-··-··-··-··-·,一般模式电码是点在下面,横在上面.改成:

.-..-..-..-..-..-..

2.通过crackt00ls工具解密

例:

为Ook!编码后如下图:

压缩包中包含多个文件,且每个文件有一个字母

1.通过notepad发现每个文件中含有一个字母

2.通过cmd命令和管道符合即可批量将文件中的内容输出到一个文件中

进入解压后的目录,然后输入cmd命令:

typedabiaojie*>>flag.txt

讲真的,才华已经枯竭

大家好好答题

也许这道题一点都不坑

也许。。。。。

wirteup:

1,先用zip伪加密破解,但是打开错误,也通过winhex查看zip文件政策

2.然后剩下zip破解了,这里有个提示是5句话,考虑5句话,可能就是密码字符长度为5位数,通过zippasswordtool对其破解,并且也说很简单不吭,说明是5位数字

需要帮助我将这个波斯传来的“波利比奥斯棋盘”上的秘密解决掉

华夜拿到该棋盘,只见棋盘盒上分布着一串十分奇异的数字:

“3534315412244543_434145114215_132435231542”

flag格式:flag{****}全为小写字符串

1.题目重要的部分是“波利比奥斯棋盘”和一串数字“3534315412244543_434145114215_132435231542”

2.百度波利比奥斯棋盘,简单的来说就是把字母排列好,用坐标的形式表现出来。字母是密文,明文便是字母的坐标。它是一个6行6列的矩阵,第一行为数字1~5,第一列也为数字1~5,表里是26个字母,除了I与J以外,每个字母都各占据一个格子,也就是每个字母都有它们的数字表示,类似于坐标。

3.把数字每两位分成一组,然后按照行列的方式找出字母,比如35就是第3行的第5列为P,以此类推

3534315412244543_434145114215_132435231542

POLYBI/JUSSQUARECI/JPHER

4.题目提示小写字母,所以构造flag{polybius_square_cipher},注:这里的24有两个对应的字母,尝试i是正确的,而j是错误的,且和原来的格式要保持一致。

他将这首残诗刻在了通往第四层虚数空间的通关法诀上

只有填满句诗词,才能走出这层虚数空间

5LiD5pyI5Zyo6YeOICA=

5YWr5pyI5Zyo5a6HIA==

5Lmd5pyI5Zyo5oi3

1.通过base64在线解密工具获得三个base64解密(本地解密工具会出现乱码,可能式编码问题)

2.解密出:

七月在野

八月在宇

九月在户

3.通过百度搜索,发现它的下一句是:十月蟋蟀入我床下

4.最终flag:

flag{十月蟋蟀入我床下}

01001001011000110110010101000011010101000100011001111011011000010110110000110001010111110110110101111001010111110110001001100001011100110110010101110011010111110110000101110010011001010101111101111001011011110111010101110010011100110101111101100001011011100110010001011111011000010110110001101100010111110111100100110000011101010111001001011111011000100110000101110011011001010111001101011111011000010111001001100101010111110110110101101001011011100110010101111101writeup:1.下载flag.txt是二进制的文本

3.二进制转十六进制,在对照ASCII码转为相应的字符

2.以用SetgSolve提取出图,点击Analyse->DataExtract,在弹出的窗口中把Rad,Green,Blue都勾上,然后点击Preview

3.会发现头部是PNG,表示这是一张PNG图片,然后点击SaveBin,把图片提取出来打开,就出现了flag

2.找一个正常的pcapng文件对比文件头,对kill.pacpng的文件头进行对应修改,修改后仍然无法打开

3.使用strings.exe对kill.pcapng中的可打印字符进行提取,保存到strings.txt文件中,命令

stringskill.pcapng>kill.txt

4.打开strings.txt,搜索flag,即可获得flag:

5.实际上直接notepad++打开搜索kill或者flag,更快找到答案,但因为文件有2M多,肯能会有点卡。

3.进行在线修复,修复完毕后用wireshark打开,查找分组字节流-字符串-flag:

4.或者通过notepad,搜索flag关键字,发现提示whereistheflag

2.利用linux下面的命令xxd,可以将类似文本转换为文件

catthor.txt|xxd-r>thorfile//查看thor.txt十六进输出,并通过xxd-r转换成二进制文件

3.使用winhex打开文件thorfile,发现文件头为LZIP

5.在linux下使用lzip命令对文件进行解压

lzip-dthorfile//对lzip文件进行解压,得到thorfile.out文件

6.使用winhex打开文件thorfile.out,文件头为有JFIF,文件头格式为:文件头:FFD8FFE0(JPEG(jpg))

7.将文件名后缀修改为jpeg,打开文件看到图片,看到答案

8.最终得到flag

1.附件下载,然后使用winhex查看文件信息,发现文件头是mid格式

0x00000000

0xff71fefe

0x83480082

0xbb4140ba

0xbb6848ba

0xbb4a80ba

0x83213082

0xff5556fe

0x00582e00

0x576fb9be

0x707ef09e

0xe74b41d6

0xa82c0f16

0x27a15690

0x8c643628

0xbfcbf976

0x4cd959aa

0x2f43d73a

0x5462300a

0x57290106

0xb02ace5a

0xef53f7fc

0x00402e36

0xff01b6a8

0x83657e3a

0xbb3b27fa

0xbb5eaeac

0xbb1017a0

0x8362672c

0xff02a650

1.liketoapproachproblemswithafreshperspectiveandtrytovisualizetheproblemathand,意思是将其内容转换成图像化

2.根据上面内容可知道是十六进制,我们可以将16进制数转化为图像,这里先尝试将16进制转换为二进制

000000000000000000000000000000000

011111111011100011111111011111110

010000011010010000000000010000010

010111011010000010100000010111010

010111011011010000100100010111010

010111011010010101000000010111010

010000011001000010011000010000010

011111111010101010101011011111110

000000000010110000010111000000000

001010111011011111011100110111110

001110000011111101111000010011110

011100111010010110100000111010110

010101000001011000000111100010110

000100111101000010101011010010000

010001100011001000011011000101000

010111111110010111111100101110110

001001100110110010101100110101010

000101111010000111101011100111010

001010100011000100011000000001010

001010111001010010000000100000110

010110000001010101100111001011010

011101111010100111111011111111100

000000000010000000010111000110110

011111111000000011011011010101000

010000011011001010111111000111010

010111011001110110010011111111010

010111011010111101010111010101100

010111011000100000001011110100000

010000011011000100110011100101100

011111111000000101010011001010000

3.这里看起来有点像一个二维码,可将0转化为白色,1转化为黑色,通过以下python脚本进行转换成二维码

6.最终扫描获得flag:

IceCTF{HAck1n9_mU5Ic_W17h_mID15_L3t5_H4vE_a_r4v3}

1.通过附件下载文件,获得capture.log文件,然后通过linux下的命令file查看文件类型,发现是pcap文件

192.168.0.9发起第1次攻击数据包序号:1

192.168.0.9第2次攻击数据包序号:148007

192.168.0.9第3次攻击数据包序号:150753

192.168.0.199第4次攻击数据包序号:155989

6.通过在线sha256生成

writeup:1.解压出来是这样的

2.warmup里是这样的

3.用winrar软件对图片raopen_forum.png压缩成open_forum.zip文件

4.比较两个文件的是否为同一文件,这里比较CRC32的值

5.使用工具AdvancedArchivePasswordRecover进行明文攻击

9.合成盲水印图:

pythonbwm.pydecodefuli.pngfuli2.pngwm_out.png

10.成功拿到flag:

1.先下载压缩文件,然后解压文件,得到一个wireshark的数据包文件,用wireshark打开。并且题目提示ping,那么ping属于icmp协议,过滤icmp协议

图片:

12.对py.pyc进行分析,发现.pyc的文件头03F30D0A缺少,以及该文件中添加隐藏了一个zip文件。这里通过winhex打开我们解压得到对00000000002.zip文件分析,发现是PK字符串开头(504B0304)

15.然后另存为flag.pyc.通过在线反编译可发编译出源代码出来:

#!/usr/bin/envpython

fromosimporturandom

defgenerate(m,k):

result=0

foriinbin(m^k)[2:]:

result=result<<1

ifint(i):

result=result^m^k

ifresult>>256:

result=result^P

continue

returnresult

defencrypt(seed):

key=int(urandom(32).encode('hex'),16)

whileTrue:

yieldkey

key=generate(key,seed)+0x3653C01D55L

defconvert(string):

returnint(string.encode('hex'),16)

P=0x10000000000000000000000000000000000000000000000000000000000000425L

flag1='ThIs_Fl4g_Is_Ri9ht'

flag2='Hey_Fl4g_Is_Not_HeRe'

data=open('data.txt','r').read()

result=encrypt(key)

encrypt1=bin(int(data,2)^eval('0x'+hex(result.next())[2:-1]*22))[2:]

encrypt2=hex(convert(flag1)^result.next())[2:-1]

encrypt3=hex(convert(flag2)^result.next())[2:-1]

print'flag1:',encrypt2

print'flag2:',encrypt3

f=open('encrypt.txt','w')

f.write(encrypt1)

f.close()

16.分析脚本发现flag1和flag2的密文在前面的zip注释信息已给出,脚本对三段明文使用了同个Seed做了加密,其中后两段明文和密文还有第一段的密文已知,考虑OTP加密。

其中encrypt实现的是一个256bit随机数生成器的功能,generate实现的是在有限域GF(2^256)下的平方运算:new_key=(old_key+seed)^2

因此,先由后两段明文和密文算出key2和key3,再在GF(2^256)下进行开方即可得到seed,key3=(key2+seed)^2

再由第一段密文(即base32隐藏的数据)key1和seed解得key1

Key2=(key1+seed)^2

17.最后写脚本通过上面的加密过程写出解码脚本如下:(最后对第一段密文(即base32隐藏的数据)和22次叠加的key1做异或得到原始二进制数据)

1.使用volatilityimageinfo-fmem.vmem查看内存映像

pythonvol.pyimageinfo-fmem.vmem

明文:I'vegotit.密钥:ok

密文:W'fsqcdwd.

首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。本例中,明文长度为8个字母(非字母均被忽略),密钥会被程序补全为“okokokok”。现在根据如下维吉尼亚密码表格进行加密:

明文第一个字母是“I”,密钥第一个字母是“o”,在表格中找到“I”列与“o”行相交点,字母“W”就是密文第一个字母;同理,“v”列与“k”行交点字母是“F”;“e”列与“o”行交点字母是“S”……

在维吉尼亚密码中,发件人和收件人必须使用同一个关键词(或同一段字母),这个关键词告诉他们怎么样才能前后改变字母的位置来获得该段信息中的每个字母的正确对应位置。比如:如果关键字为“BIG”,发件人将把明文中的第一个字母按“B”行来加密(向后移动1个位置,因为B是排在A后面的第1个字母),明文中的第二个字母按“I”行来加密(向后移动8个位置,因为I是排在A后面的第8个字母),明文中的第三个字母按“G”行加密(向后移动6个位置,因为G是排在A后面的第6个位置),后面再循环操作即可完成加密任务。

例如:

明文:THEBUTCHERTHEBAKERANDTHECANDLESTICKMAKER。

密钥:BIG

密文:UPKCCZDPKSBNFJGLMXBVJUPKDITETKTBODSSBSKS

发现有重复的字母映射,猜测为维吉尼亚密码加密

由密文-->明文:(列为明文,行为密钥,交叉点为密文)

xybsxaxy-->flagjlfl

x-->f,推出第一个密钥为s

y-->l,推出第二个密钥为n

b-->a,推出第三个密钥为b

s-->g,推出第四个密钥为m

x-->j,推出第五个密钥为o

a-->l,推出第六个密钥为p

x-->f,推出密钥为s

y-->l,推出密钥为n

第7位后,密钥开始循环,所以

推出密钥:snbmop

4.根据在线工具可以获得xybs:xaxybs{W_Zf0j_o0fvxft}的明文:

1.看到二维码,第一件事就是先扫一下。发现扫不了,那么就肯定是码有问题了。

左下角的小狗挡住了呢,通过ps修复工具对其进行修复。(修复了定位点)

2.然后保存,通过现在QR识别工具即可识别出二维码

6.打开这个文件的文档,发现一段可疑的数据,分别复制出来

5555555595555A65556AA696AA6666666955,提示:曼联

在最初信号的时候,即第一个信号时:如果中间位电平从低到高,则表示0;如果中间位电平从高到低,则表示1。

后面的信号(从第二个开始)就看每个信号位开始时有没有跳变来决定:在信号位开始时改变信号极性,表示逻辑"0";在信号位开始时不改变信号极性,表示辑"1"。

1.根据题目提示曼联,可猜测是曼彻斯特编码

2.通过python脚本进行解密:

#!/user/bin/envpython2#-*-coding:utf-8-*-n=0x5555555595555A65556AA696AA6666666955flag=''bs='0'+bin(n)[2:]r=''defconv(s):returnhex(int(s,2))[2:]foriinrange(0,len(bs),2):ifbs[i:i+2]=='01':r+='1'else:r+='0'foriinrange(0,len(r),8):tmp=r[i:i+8][::-1]flag+=conv(tmp[:4])flag+=conv(tmp[4:])printflag.upper()

#!/usr/bin/envpython2.7(62211)#coding=utf-8fromrandomimportrandintfrommathimportfloor,sqrtpasswd=''flag='_'ordflag=[ord(i)foriinflag]#ordflag是flag中字符对应的ascii码randI=randint(65,max(ordflag))*255#randI是区间[65,flag中字符最大ascii码)内产生的随机数*255foriinrange(len(flag)):#循环次数为flag中字符个数passwd+=str(int(floor(float(randI+ordflag[i])/2+sqrt(randI*ordflag[i]))%255))+''printpasswd#串用空格分隔的数字5.代码分析:(1)获取flag字符串的ascii值

(2)在下限为65上线为flag的ascii码最大值之间取随机数,乘上255

(3)循环flag字符串,经过这个加减乘除开方的混合计算

(4)输出结果

那么flag.enc里面的数字就是最后输出的结果,需要反推flag字符

python代码输出格式是一串用空格分隔的数字。得到的这一串数字应该是用flag输出的。那么flag应该是19位(数字串中19个数字)。

因为变量falg是代表flag,那么flag中字符一定是字母大小写、0~9、{}这些字符组成的。

那么ordflag中ascii码最大是125(flag中的‘}’字符),就让randI从65到125遍历一遍。

最后得到的19个数字,每个数字对应一个字符,就把每个字符对应的数字都获取到,然后再跟正确的19个数字进行比对查看是哪19个字符。

核心思想是65-127的acil码的范围内,for每一个字符,每个字符都做tmpInt=int(floor(float(k+ANSInum[i])/2+sqrt(k*ANSInum[i]))%255)处理,处理出来与flag的数字逐一比较,并且以字典的方式保存取值,最终就可推出flag的每个字符

6.把另一个文件flag.enc文件用notepad打开:

208140149236189771931042021849723614820224419977122113

7.根据以上脚本写出解密flag,如下:

fromrandomimportrandintfrommathimportfloor,sqrtANSInum=[iforiinrange(33,127)]flagEnc=[208,140,149,236,189,77,193,104,202,184,97,236,148,202,244,199,77,122,113]forkinrange(65*255,127*255,255):tmpDict={}foriinrange(len(ANSInum)):tmpInt=int(floor(float(k+ANSInum[i])/2+sqrt(k*ANSInum[i]))%255)tmpDict[tmpInt]=chr(ANSInum[i])try:flag=''.join([tmpDict[i]foriinflagEnc])print'flag{'+flag+'}'except:pass

2.通过wireshark打开流量包后,按照协议进行分类,发现了存在以下几种协议类型:

ARP/DNS/FTP/FTP-DATA/ICMP/ICMPv6/IGMPv3/LLMNR/NBNS/SSDP/SSL/TCP/TLSv1.2/UDP

服务器地址:182.254.217.142

用户名:ftp

密码:codingay

5.但是通过分析数据包我发现了一些有价值的东西,发现了ftp的目录结构,追踪一下TCP流,查看目录结构。

目录包含了,flag.zip和key.log

12.加密的数据包?那就应该是TLS协议没跑了,又想到key.log这个文件还没有用,然后使用key.log对TLS协议进行解密,下面提取key.log文件

14.现在使用key.log对TLS协议进行解密。(操作步骤:编辑→首选项→Protocols→TLS,然后在下面导入key.log文件)

2.打开jiami.py文件内容如下:

#-*-coding:utf8-*-importpyminizipfromhashlibimportmd5importosdefcreate(files,zfile):password=os.urandom(15)#随机产生一个15字节的字符串password=md5(password).hexdigest()#获取这个字符串的md5值pyminizip.compress_multiple(files,zfile,password,0)#这是一个压缩文件的方法把files参数中文件压缩成zfile指定的文件,压缩密码是password,0可以理解为复杂程度值为1~9,默认是0passif__name__=='__main__':files=['jiami.py','gogogo.zip']zfile='crypto.zip'#就是把jiami.py和gogogo.zip两个文件压缩成crypto.zip密码是上面随机字符串的md5值create(files,zfile)

3.接下来打开crypto.zip提示有密码,也就是上述md5值,这个密码我们是不知道的。因为crypto.zip压缩包中有jiami.py文件,而jiami.py这个文件是已知的,因此我们可以用zip明文进行攻击。

明文攻击需要利用两个压缩包(已知文件的压缩包,和加密的需要破解的压缩包),这两个压缩包压缩方式要相同,直接对jiami.py文件进行压缩是不行的,也要用python的pyminizip模块进行压缩,脚本如下:

#-*-coding:cp936-*-importpyminizippyminizip.compress(r"jiami.py","",r"jiami.zip","",0)#没有密码

4.然后进行明文攻击,利用AdvancedArchivePasswordRecovery4.53进行利用,这里的crc32相同。

5.爆破成功保存为压缩包UnEncrypted.zip解压后得到gogogo.zip,解压得到AES.encryt、AESencrypt.py和RSA.encrypt三个文件

6.打开AESencrypt.py文件如下:

#-*-coding:utf8-*-fromCrypto.CipherimportAESs=open('next.zip','rb').read()BS=16pad_len=BS-len(s)%BSpadding=chr(pad_len)*pad_lens+=padding#把最后不满16个字节的用所缺字节个数值ASCII码对应的字符补足16个字节,如缺5个字节就补5个ascii码为5的字符,因为AES明文是128bit的倍数key='我后来忘了'#AES秘钥(未知)n=0x48D6B5DAB6617F21B39AB2F7B14969A7337247CABB417B900AE1D986DB47D971#两个大素数p与q乘积e=0x10001#RSA公钥65537m=long(key.encode('hex'),16)#秘钥key转16进制转整型,作为RSA的明文c=pow(m,e,n)#c是RSA加密后的密文c='0{:x}'.format(c).decode('hex')withopen('RSA.encrypt','wb')asf:f.write(c)

#RSA.encrypt文件的16进制就是RSA的密文,即就是AES秘钥key加密后的密文,已知obj=AES.new(key,AES.MODE_ECB)withopen('AES.encryt','wb')asf:f.write(obj.encrypt(s))#对next.zip进行AES加密,秘钥为key,AES.encryt文件中的内容即为AES加密后的密文已知。

7.整合已有信息就是,已知AES加密后的密文要解出AES的明文;但是AES秘钥不知道,要先求出AES秘钥key

key就是RSA的明文,已知RSA的密文c,两个大素数乘积n也已知可以求出p,q,然后求出RSA私钥,然后根据私钥,密文,n可以求出RSA明文(就是AES的秘钥key),然后根据AES密文和秘钥key就能解除AES的明文。

首先十六进的n转成10进制为:32945885482421841602167475970472000545315534895409154025267147105384142461297

p=177334994338425644535647498913444186659q=185783328357334813222812664416930395483

n=32945885482421841602167475970472000545315534895409154025267147105384142461297

e=65537

9.通过RSA-Tool2解出d=21459038613121460434132216103140795081593356519819592462521069311922260546829

10.通过脚本先打开读取RSA.encrypt文件,并转换成16进制,然后通过RAS的公钥和私钥,解密出RSA的密钥,也就是AES.encryt的key,AES秘钥key加密后的密文就是RSA密文,通过AES.encryt的key值解密出next.zip文件

脚本如下:

#-*-coding:cp936-*-fromCrypto.PublicKeyimportRSAfromCrypto.CipherimportAESdefegcd(a,b):ifa==0:return(b,0,1)else:g,y,x=egcd(b%a,a)return(g,x-(b//a)*y,y)defmodinv(a,m):g,x,y=egcd(a,m)ifg!=1:raiseException('modularinversedoesnotexist')else:returnx%m

p=177334994338425644535647498913444186659q=185783328357334813222812664416930395483n=32945885482421841602167475970472000545315534895409154025267147105384142461297e=65537#公钥d=modinv(e,(p-1)*(q-1))#RSA私钥c=open("RSA.encrypt","rb").read();c=long(c.encode('hex'),16)m=pow(c,d,n)#m是明文,转成字符串就是key="copy__white__key"key="copy__white__key"obj=AES.new(key,AES.MODE_ECB)s=open("AES.encryt","rb").read()str=obj.decrypt(s)withopen(r'next.zip','wb')asf:f.write(str)#解密后得到next.zip文件

11.解压next.zip文件得到encrypt.py、first、second三个文件。

12.打开encrypt.py内容:

#-*-coding:utf8-*-frombase64import*s=open('flag.jpg','rb').read()s='-'.join(map(b16encode,list(s)))

#list(s)每个字节(一个字符)作为列表的一项

#map(b16encode,list(s)),列表的每一项都执行b16encode(这个函数其实是得到字符对应的十六进制值),并将结果作为新列表中的项

#'-'.join(),列表中的每项都用‘-’分隔。

#最终的执行结果是flag.jpg文件的用‘-’分隔字节的十六进制数据

s=map(''.join,zip(*(s.split('-'))))

#zip(*(s.split('-')))得到两个元组,一个是每个字节的第一个16进制值组成的,一个是每个字节的第二个16进制值组成的

#然后作为一个新列表

withopen('first','wb')asf:f.write(b16decode(s[0]))#把第一个列表元素转成字符串写入first文件withopen('second','wb')asf:f.write(b16decode(s[1]))#把第二个列表元素转成字符串写入second文件

13.通过代码分析完也就是把flag.jpg文件的16进制值分成了两部分,每个字节的前4位组合成first文件,后4位组合成second文件。通过脚本合并生成flag.jpg:

#-*-coding:cp936-*-frombase64import*s1=open(r'first','rb').read()s2=open(r'second','rb').read()s1=''.join(map(b16encode,list(s1)))#获取16进制数据s2=''.join(map(b16encode,list(s2)))str=""foriinrange(0,len(s1)):str+=s1[i]+s2[i];#得到flag.jpg16进制数据str=str.decode('hex')withopen(r'flag.jpg','wb')asf:f.write(str)

14.得到flag.jpg图片

15.打开图片没有flag信息,用winhex(或010Editor)打开查看16进制数据,在图片结尾(FFD9)后面还有内容

16.16进制头为38425053(AdobePhotoshop(psd),文件头:38425053),根据文件头可以知道这是psd(PhotoshopDocument)文件(原理是用copy命令把jpg文件和psd文件合并在一起)

先选择块起始,然后再选择块结束,全部复制出来

5555555595555A65556A5A96AA666666A955

压力为30psi时的未解码报文为:

5555555595555A65556A9AA6AA6666665665

请给出ID为0xFEB757的传感器在压力为25psi时的解码后报文,提交hex。

注:其他测量读数与上一个传感器一致。

1.根据题目可知45pis和35psi的报文,这里都是16进制

压力45psi的报文5555555595555A65556A5A96AA666666A955

35psi报文:5555555595555A65556A9AA6AA6666665665

2.需要上面的报文都转换成十进制

#45psi

>>>bin(0x5555555595555A65556A5A96AA666666A955)

'0b10101010101010101010101010101011001010101010101010110100110010101010101011010100101101010010110101010100110011001100110011001101010100101010101'

#30psi

>>>bin(0x5555555595555A65556A9AA6AA6666665665)

'0b10101010101010101010101010101011001010101010101010110100110010101010101011010101001101010100110101010100110011001100110011001100101011001100101'

3.再对其进行曼彻斯特编码:

45psi:10101010101010101010101010101011001010101010101010110100110010101010101011010100101101010010110101010100110011001100110011001101010100101010101

曼切斯特是从低到高跳变表示“1”,从高到低跳变表示“0”,即01->1,10->0,11>1,将编码进行曼切斯特解码

111111111111111101111111110010111111100011000110000010101010101000011111

反转:

111111111111111111111110110100110001111101100011010100000101010111111000

将其转换成十六进制

>>>hex(0b111111111111111111111110110100110001111101100011010100000101010111111000)

'0xfffffed31f635055f8'#其中包含了ID值0xFED31F,与题目所给ID:0xFED31F契合

经反转处理后Hex:FFFFFED31F635055F8

30psi:10101010101010101010101010101011001010101010101010110100110010101010101011010101001101010100110101010100110011001100110011001100101011001100101

111111111111111101111111110010111111100001000010000010101010101011101011

反转:(每8位都进行一次反转)

111111111111111111111110110100110001111101000010010100000101010111010111

将其转换成十六进制:

>>>hex(0b111111111111111111111110110100110001111101000010010100000101010111010111)

'0xfffffed31f425055d7'

经反转处理后Hex:FFFFFED31F425055D7

然后发现校验值为从ID开始每字节相加的和模256的十六进制值即为校验值即:例如:FFFFFED31F635055F8FE+D3+1F+63+50+55=2F8(F8即校验值)再例如:FFFFFED31F425055D7FE+D3+1F+42+50+55=2D7(D7即校验值)那么同理:对于题目中的25psi:FFFFFEB757375055FE+B7+57+37+50+55=2E8校验值应该为E8即得到flag:flag{FFFFFEB757375055E8}

5.观察到给定的两组数据只有两个字节有差异,其中前面一个字节代表压力值,后一个字节猜想是校验值,同时注意到二者的差是相同的,于是初步确定校验算法是前面字节的和,但是每次都差2,于是去掉开头的两个字节FFFF,得到的校验值低8位匹配。通过脚本如下:

defdecode(a):t=bin(a)[2:].rjust(144,'0')counter=0res=[]temp=[]foriinrange(0,len(t),2):ift[i]=='0':temp.append('1')else:temp.append('0')iflen(temp)==8:temp.reverse()res.append(int(''.join(temp),2))temp=[]fin=""fortinres:fin+=hex(t)[2:].rjust(2,'0').upper()returnfindefcheck(m):sum=0sum+=(m>>8)&0xffsum+=(m>>16)&0xffsum+=(m>>24)&0xffsum+=(m>>32)&0xffsum+=(m>>40)&0xffsum+=(m>>48)&0xffreturnsum&0xfft=0xfffffeb75700505500i=0x20whilei<0x43:m=t+(i<<24)code=check(m)m+=codei+=1print"flag{"+hex(m)[2:-1].upper()+"}"

5.可以看到是传了webshell然后进行文件操作,一般是传webshell然后菜刀连接,参数进行base64位加密,先解密参数

6.没发现可利用的,然后对上面传输的编码进行unicode转成ascii

7.最终得到flag:

flag{si11yb0yemmm}

1.在其他地方找来一张完整的二维码,然后通过ps截取定位矩阵框,进行修复,最终得到

THE END
1.百度翻译器在线拍照翻译如发现版本老旧,欢迎邮件反馈tousu@liqucn.com,或移步百度翻译官网下载最新版 百度翻译iOS版介绍 百度翻译,一般又称百度翻译器,百度翻译器英语翻译中文,百度翻译器翻译拍照,百度翻译器实时翻译,百度翻译器在线拍照翻译,百度翻译器拍照app,百度翻译器在线实时翻译,baidu translate翻译,Baidu Translate。 世界很复杂,百度更https://liqucn.com/os/ios/rj/120732.wml
2.有道翻译有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻译、DOC翻译、PPT翻译、人工翻译、同传等服务。https://fanyi.youdao.com/
3.如何翻译PDF英语文档?三种有效思路思路一:专业翻译在线平台(非扫描件,粗略机翻) 日常生活工作中,我们翻译PDF文档时,一般都会需要把译文转录下来,而不是像上面一样,仅仅是自己看一下。所以,我们需要更方便的工具。 对此,Google翻译、DeepL等在线翻译工具会帮助我们。但有两点需要注意。 第一,翻译平台在识别PDF文字的时候,一般会有少量误差,加上机器https://www.jinyutrans.com/hotspot/how_to_translate_a_pdf_file
4.百度翻译英语app百度翻译英语在线翻译器下载11.8.0安卓版手机扫描二维码下载 软件介绍 相关下载 点击评论 相关推荐:实用工具 百度翻译是一款由北京百度网讯科技有限公司开发的手机翻译软件,软件可以帮助用户们快速准确的翻译出各个国家的语言,用户只需要将文字导入到平台中,系统就会自动翻译,既可以在线翻译,也可以离线翻译,满足不同用户们的翻译需求。 https://www.ptxz.com/soft/20179.htm
5.百度翻译器图片识别下载百度翻译器语音识别在线百度翻译器支持用户查询各种语音翻译,支持语音、图片等多种方式,给予丰富多彩权威英日韩好用口语包和离线语音包。有兴趣的小伙伴可以下载百度翻译器图片识体验吧。 百度翻译图片识别特色 百度翻译app在现阶段的手机翻译运用之中是T1主力阵容的手机翻译软件,百度翻译app是现阶段流行软件软件,百度翻译app众多中国网民们翻译https://m.ali213.net/android/328841.html
6.百度翻译器电脑版官方电脑版拍照翻译在线百度翻译器电脑版是一款安卓手机多功能翻译服务软件,帮助用户通过拍照需要翻译的内容,进行智能识别翻译操作,汇集了几十种语言可以互相翻译,适合多场景下使用,并且能够智能扫描识别提取图片内容,使用方法简单。图灵时代下载站提供拍照翻译在线百度翻译器电脑版的官方下载地址,有需要的用户赶快下载吧! https://www.jrxwxm.com/soft/10103230.htm
7.搜狗翻译搜狗翻译可支持中、英、法、日等50多种语言之间的互译功能,为您即时免费提供字词、短语、文本翻译服务。https://fanyi.sogou.com/
8.信息技术应用能力提升工程2.0工具软件集锦AI拍照扫描翻怿 用手机快速抠出照片或图片中的文字 用手机快速抠出与翻译照片或图片中的英文 文字云生成器 作品一 作品二 简签文档 简签是一款简单易用的手机文档工具,所有文档在线编辑、云端保存,不同设备间数据无缝同步。可以分享好友,支持导出Word和图片。 https://www.meipian.cn/3b1ahl50
9.文言文翻译转换器在线文言文翻译器智能翻译官为用户提供在线文言文翻译转换器,支持在线进行文言文翻译、古文翻译、古诗翻译等操作,用户只需输入或者粘贴文言文、古诗文内容,即可一键翻译成现代汉语。用户可以将文言文、古诗文原文和现代汉语翻译结果进行对照,详细了解文言文、古诗文中字词的含义。 https://www.fanyi1234.com/wyw/
10.飞书文档翻译软件:提升跨语言沟通效率百度翻译不仅适用于日常使用,还能满足专业需求,如法律文件和学术论文的翻译。通过结合AI大模型和专业译员的优势,百度翻译为 五、DeepL翻译器 5.1 DeepL翻译器的多语言支持 DeepL翻译器是一款领先的在线翻译工具,因其高准确性和易用性而备受用户青睐。DeepL支持33种语言的翻译,包括英语、中文、法语、德语、西班牙语等,https://www.feishu.cn/content/document-translation-software-feishu
11.百度翻译器下载手机版百度翻译在线拍照扫一扫app是一款支持多种语言在线或离线翻译的手机软件,帮助大家与外面有人进行无阻碍沟通,同时也为大家的工作和学习带来很大的便利。本应用版本为去广告版本,去除烦人的广告插件,还用户更多清爽体验。快来IT猫扑下载吧! 官方介绍 百度翻译是百度旗下产品,是您学习、工作、出国旅行必备翻译和词典软件。https://m.itmop.com/i/39173/
12.百度文言文翻译器精选应用/游戏专题下载为了满足您对“百度文言文翻译器”的需求,我们精心挑选了一系列优质的APP应用软件。这些应用不仅能提供精准的文言文翻译,还能帮助您更好地理解古文的深意。首先,《文言文翻译器》和《古文翻译器》是专门针对文言文的翻译工具,能够快速准确地将文言文转换为现代汉语。其次,《有道翻译官》和《百度翻译》不仅支持多种语言https://sj.qq.com/topic/200074536
13.手机如何提取网页视频?3.百度翻译 一款非常好用的翻译工具,有着神经网络机器翻译系统,能够使译文自然流畅,里面的翻译功能把视频的字幕提取出来。可以使用软件中的对话翻译功能,操作很简单,直接将视频声音录制进去,等待它自动提取文字即可。 4.Video-Subtitle-Extractor 一款免费的开源软件,可以提取视频文件中的字幕。支持多种视频格式,包括mp4https://tool.a5.cn/article/show/101196.html
14.在线翻译器百度在线翻译网站分类: 在线翻译 分类位置: ? 电脑网络 ? 资源 ? 在线翻译 服务器IP:180.101.49.58 关键词:百度翻译, 网页翻译, 中英文翻译, 翻译在线, 在线翻译器, 网站描述:百度翻译支持中文、英文免费翻译;支持网页翻译,在输入框输入网页地址即可;提供一键清空、复制功能、支持双语对照查看,使您体验更加流畅。 提https://m.023dir.com/websites/11258-5.html
15.百度翻译器翻译在线,百度翻译器翻译在线百度翻译器提供在线多语言翻译服务,支持中英文互译等多种语言,方便快捷的网页翻译工具,为您提供高效准确的翻译体验。 ,理想股票技术论坛https://www.55188.com/topics-5244344.html
16.2021年运营人必备的15类工具汇总!工欲善其事,必先利其器,好的工具可以有效提升工作效率,起到事半功倍的作用,大叔收集了一些常用工具,各位可以按需使用。 一、办公协作 1.印象笔记 https://www.yinxiang.com/ 2.有道云笔记 支持微信、微博、链接收藏和网页剪报等多种形式,优秀内容一键保存永不丢失,搭建属于你的知识体系。OCR扫描,快捷准确,满足https://www.niaogebiji.com/article-69542-1.html
17.以技术为引擎百度在线翻译精益求精2011 年,百度正式推出百度翻译,入主在线翻译。从 2011 年 6 月百度翻译上线以来,凭借“翻译质量、产品功能、使用体验”等方面的优势,备受用户认可,在翻译领域后来居上。最新数据显示,百度每天还响应着 300 余万来自网页搜索的翻译请求和 600 余万的词典翻译请求。此外,百度翻译还在 2011 年底新上线了中日翻译,翻译https://www.techweb.com.cn/mobile/2012-02-02/1146868.shtml
18.在线翻译器扫一扫图片在线翻译百度翻译在线翻译在线翻译器,英汉翻译器,支持全球超过80多个国家语言的词典查询和全文翻译,支持屏幕取词、 划词、剪贴板取词、索引提示和真人语音朗读功能,并提供海量词库免费下载,专业词典、百科全书、例句搜索和网络释义一应俱全,是新一代的词典与文本翻译专家ios应用 pc软件 https://m.duote.com/zt/soft8971/
19.好?常用的在线英文翻译工具分享百度云存储翻译器多种语言但其实百度网盘的功能远不仅于此,它还有个全能翻译的功能,能帮助我们实现英文翻译的操作。不过该功能需要开通百度网盘的会员才可以使用。 好啦,今天的分享到这里就结束啦,对于英文翻译器在线翻译有哪些这个问题,现在大家清楚了吧。https://www.163.com/dy/article/I55VJAU1055634PA.html
20.易语言百度在线翻译源码易语言百度在线翻译源码[复制链接] 2018-08-28 17:10:06 网络相关源码 热心易友 2649次浏览 易语言百度在线翻译源码 点我下载(已有277次下载) 引用支持库 源码文件名支持库文件名支持库标识 翻译.e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325https://www.eyuyan.la/post/8157.html
21.(十大韩语翻译器)好用的韩文翻译器韩语在线翻译器有哪些中、韩两国隔海相望,文化相互交流。韩语已成为中国主要的外来语种之一,学习人数越来越多。本文中编辑盘点了一批中韩翻译器、韩语在线翻译应用,如Naver词典、Papago、谷歌翻译、有道翻译官、韩语翻译官、百度翻译、旅行翻译官、金山词霸、灵格斯词霸等韩语翻译器,综合翻译水平较高,有着较多的用户量,下面一起看看!http://www.zhuoyunkang.com/news/show-44182.html
22.在线文言文翻译器wyw.5156edu.com在线文言文翻译器 首页 网站总排名 行业排名 生活服务 综合其他 休闲娱乐 教育文化 行业企业 网络科技 政府组织 购物网站 新闻媒体 交通旅游 医疗健康 体育健身 地区排名 北京 上海 天津 重庆 黑龙江 吉林 辽宁 内蒙古 河北 山西 陕西 山东 新疆 西藏 青海https://top.chinaz.com/site_wyw.5156edu.com.html
23.百度翻译俄文翻中文下载百度翻译器翻译俄文版软件v7.0最新版俄文翻译,更多的翻译内容准确无误。应用截图应用介绍 百度翻译器翻译俄文版,俄文翻中文的在线翻译平台来了,需要的用户干净来下载吧。这里有更多的翻译语种哦,菜单翻译,实物翻译,单词翻译,旅游必备。 【主要功能】 -高质量多语种互译:支持28种热门语言,包含中、英、日、韩、泰、德、法、葡等,口语和旅游领域翻译https://www.qqtn.com/azsoft/212622.html
24.百度翻译器怎么实时翻译百度翻译器怎么实时翻译时间:2024-04-08 22:50 小编:工具书百度翻译app官方下载苹果是一款非常好用的在线翻译软件,这里面提供的用语以及词汇非常多,内置强大的翻译系统不管任何国家地区的语言,都可以轻松在线翻译,体验最贴心的翻译服务。不同板块的功能都可以在线使用,一键拍照或者扫一扫准确直译出来,不管是韩语、日语https://www.shubang.net/news/49268.html
25.百度一下,你就知道全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结果。https://baidu.com/