渗透测试中的加密解密
题目描述
- 知识点
掌握渗透测试中常用的加解密方法
密码学在网络安全中起到举足轻重的作用,无论是在 CTF 还是在渗透测试中,都经常会看到密码学的影子。因此,掌握常用加解密方法显得尤为重要。
一些常用的加密和编码方法如下:
URL 编码
HTML 编码
Unicode 编码
Base64 编码
MD5 加密
ASCII Hex
DES 加密
RSA 加密
Hash 加密
小楼偶然获得了一段神秘的代码,代码内容如下:
%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d
目标
以上字符经过了多种加密或编码混淆,请你尝试还原出最初的字符串。
完成要求
新建一个 flag.txt 存放到 /home/shiyanlou/ 目录下,将还原的字符串写入 flag.txt 中,形式为 lanqiao-flag{key}。
例如,假设还原得到的字符串为 12345678,那么请在 flag.txt 中写入 lanqiao-flag{12345678},最后点击「提交检测」即可。
提示
这个字符串共用了 4 个加密或编码,分别是:
URL 编码
HTML 编码
Base64 编码
Hash(MD5)加密
你可以根据字符串特征判断加密/编码方式,并按照顺序解密吗?
来源:蓝桥(实验楼)
链接:https://www.lanqiao.cn/problems/247/learning/
解题思路
-
首先观察字符串为
HTML
的编码形状,利用Python
的html
库解码,结果为:
%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d
# HTML解码示例: import html str0 = "%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d" html_decode = html.unescape(xxx) print(html_decode) #%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d
HTML
编码特征:
SGML 类语言的转义序列(escape sequence)
numeric character reference(NCR)以&#x
开头的后接十六进制数字。 -
观察编码,具有
URL
的特征,利用Python解之,结果为:ODM0NTdjNjkzZDMzYTIyZjEwYmNkOWYyYTk0ZDAzODc=
# URL解码示例: import urllib.parse url_decode = urllib.parse.unquote(html_decode) print(url_decode) # ODM0NTdjNjkzZDMzYTIyZjEwYmNkOWYyYTk0ZDAzODc=
URL
编码特征:
URL 编码使用 “%” 其后跟随两位的十六进制数来替换非 ASCII 字符。
URL 不能包含空格。URL 编码通常使用 + 来替换空格。 -
很容易识别,获得结果:
83457c693d33a22f10bcd9f2a94d0387
import base64 print(base64.b64decode(result)) # 83457c693d33a22f10bcd9f2a94d0387
BASE64
编码特征:
64个字符 - 小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/",与结尾典型符号=
组成。 -
利用
md5
解密网站破解 md5.tellyou, md5 cracker -
最终解:lanqiao-flag{
youarewelcome
}