misc题目总结(未完待续)

阅读: 评论:0

misc题目总结(未完待续)

misc题目总结(未完待续)

文章目录

    • Low2
      • Unicode编码
      • 1 UTF-8 -16 -32编码和Unicode编码
        • 1)Unicode编码规范制定标准:
        • 2)UTF-8编码:
        • 3)UTF-32编码:
        • 3)UTF-16编码:
      • 写出脚本
    • 打不开的文件
      • 脚本破解
    • 0000-9999脚本
    • wireshark-1

Low2

flag.png是一个png图片隐写

放进winhex中发现问题

这些数字对吧,没有什么问题吗?

哦,是的吗?宝~

这个我也不知道所以任何问题百度搜索!

这个直接找到了原来的题目了

哈哈,不太厚道兄弟儿?!

原来是Unicode码,我们现在查查这个Unicode有什么特别的地方,为以后的发现可以找到不同

Unicode编码

1 UTF-8 -16 -32编码和Unicode编码

Unicode编码是一种计算机字符编码标准,其实个人认为叫字符集更为准确;而我们熟悉的UTF-8 UTF-16 UTF-32是Unicode的具体实现(怎么存储在计算机)。

1)Unicode编码规范制定标准:

把世界上所有能出现的字符,都为其分配一个数字来表示,比如,数字U+7F57被分配给了汉字中的"罗"字。Unicode编码的标准里字符数量一直实在新增(包括一些稀有字符,当然emoji表情字符也属于unicode编码哈哈),19年3月刚发布了Unicode12.0版本,比之前的版本新增了一些字符,现在在标准中的字符一共有137929个,而Unicode编码目前规划了U+0000至U+10FFFF为unicode编码(以世界上字符的数量应该是很久不会考虑扩展的),算一下目前还剩下976183(1114112-137929)个代码点,这976183个代码点是规划在unicode中的数字,但是还没被分配对应的字符。

2)UTF-8编码:

UTF-8可以说是当前互联网最常用的编码格式了,它基于Unicode字符集进行编码设计。它最大的特点是变长字节的编码设计,一个字符最长4个字节,最少1个字节,大部分的中文字符占3个字节。

编码规则如下:

1.用一个字节表示的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码点。由于这128个字符的unicode完全对照ASCII码,可以说完全向下兼容ASCII码。即ASCII编码的文件可以用UTF-8打开而不乱码;

2.用一个字节以上表示的字符,假设是N个字节表示这个字符:则该字符第一个字节的前N位都为1,第N+1位为0,剩下的N-1个字节的前两位都设为10,剩下没有主动设值的位置则使用这个字符的Unicode二进制代码点从低位到高位填充,不够用0补足。

编码对照表如下:

Unicode字符集范围(十六进制)UTF-8编码(二进制)
0000 0000 - 0000 007F0xxxxxxx
0000 0080 - 0000 07FF110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

结合编码规则和编码对照表,讲解汉字“罗”是如何编码和解码的:

编码(encode): 字符“罗”所对应的unicode代码点由以上规则转化为UTF-8所对应的二进制数字,则称为编码。可以理解为使字符成为代码的意思,而解码就是代码成为字符。

首先“罗”对应了unicode中的U+7F57,对应编码表中第三行,也就是用3个字节来表示的字符,把7F57的二进制111 1111 0101 0111‬从低位对应补足到1110xxxx 10xxxxxx 10xxxxxx(从低位) 如下图所示:

最后成为11100111 10111101 10010111即十六进制E7BD97。

解码(decode): UTF-8所对应的二进制数字由以上规则转化为unicode码再对应到具体字符,则称为编码。

如11100111 10111101 10010111这段二进制编码,第一个字节是111,对应编码对照表则这段编码表示的字符由3个字节组成,用1110xxxx 10xxxxxx 10xxxxxx规则剔除出x对应的数为111 1111 0101 0111,即7F57,该数字对应unicode字符集中的字符“罗”。

3)UTF-32编码:

同理和UTF-8基于unicode字符集。UTF-32编码为固定长度4个字节。因为unicode范围为00FFFF-10FFFF,4个字节表示的范围为00000000-FFFFFFFF,能直接表示所有unicode编码,不需要进行转换编码转换。以空间换时间。

3)UTF-16编码:

UTF-16以2或者4个字节编码表示unicode字符:

unicode字符集中,000000-00FFFF表示的字符,在UTF-16中用2字节直接编码表示,不需要编码转换,这点和UTF-32一样(这里有点需要说明一下, U+D800 到 U+DFFF 是一个空段,即这些码点不对应任何字符,4字节需要用到)

‬unicode字符集中,010000-10FFFF表示的字符,在UTF-16中用4字节编码表示,但是需要进行编码转换。比如010000-10FFFF中的某个字符X的uicode编码为AAAA AAAA AABB BBBB BBBB,分为高10位和低10位,高10位加上高位代理位D8(110110),低10位加上低位代理位DF(110111),即组成字符X的UTF-16编码110110AAAAAAAAAAA 110111BBBBBBBBBB。

现在我们对Unicode编码有了一定的了解

写出脚本

a = '0066006c00610067007b964452a096905199007d'
sum = ''
for i in range(0,len(a),4):s = "\u" + a[i:i+4]sum = sum + s
de('utf8').decode('unicode_escape'))

输出

flag{附加隐写}

打不开的文件

打开文件的时候发现这个文件因为破损打不开

查看png的文件头的格式

发现少了一些东西

89 50 4E 47 0D 0A 1A 0A 是PNG头部署名域,表示这是一个PNG图片

文件头少了0D 0A 1A 0A,修改文件中的ascii hex,保存

发现是一个二维码

进去是一个base64编码

脚本破解

import base64str = 'ZmxhZyU3QmQxOWVlMjEwOWU4ODNmMjU5ZTJkMDBkMjRhOTU0NTJjJTdE'
b64 = base64.b64decode(str)
print(b64)

输出

b'flag%7Bd19ee2109e883f259e2d00d24a95452c%7D'

现在%7B和%7D是{}

所以flag{7Bd19ee2109e883f259e2d00d24a95452c}

for i in range(10000):print(f'{i:04}')

现在%7B和%7D是{}

所以flag{7Bd19ee2109e883f259e2d00d24a95452c}

0000-9999脚本

for i in range(10000):print(f'{i:04}')

wireshark-1


我们通过wireshark抓到管理员在登入网站的一段流量包
可以判断是POST请求
过滤请求&#hod==“POST”
TCP追踪流

本文发布于:2024-01-29 07:34:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648485913709.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:未完   题目   misc
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23