WebGoat A2
Cryptographic Failures
Crypto Basics
Base64 编码
Base64 用于将二进制转 ASCII,字符集为 A-Z、a-z、0-9、+、/,填充符 =。每 3 字节(24 位)分成 4 组 6 位并映射字符,若数据非 3 的倍数则用 = 填充。编码后长度从 $n$ 字节变为 $\lceil n/3 \rceil \times 4$ 字节,体积增大约 33\%。
题目解码:echo bGF6eWZ1OnBhc3N3MHJk | base64 -d 得 lazyfu:passw0rd。界面:
其他编码
URL、HTML、UUEncode、XOR 等。示例题:
IBM WebSphere 使用 _ 作为 XOR 密钥:先 Base64 解码再 XOR,得密码 databasepassword。脚本与结果:

可用在线解码:https://strelitzia.net/wasXORdecoder/wasXORdecoder.html
普通哈希
题目:
使用在线彩虹表(如 https://crackstation.net、https://cmd5.com)查得 secret 与 passw0rd:

HTTPS 结合对称与非对称:非对称协商密钥,对称加密大量数据。
签名
给定 RSA 私钥,需计算公钥模数并用私钥签名:
openssl rsa -in private.key -pubout > pub.key
openssl rsa -in pub.key -pubin -noout -modulus | sed 's/Modulus=//'
openssl rsa -in pub.key -pubin -noout -modulus | sed 's/Modulus=//' > modulus
openssl dgst -sha256 -sign private.key -out sign.bin modulus
base64 sign.bin -w0
keystore / truststore
- truststore:存储公钥及颁发者信息。
- keystore:可位于文件系统、数据库或硬件,用于存放私钥/证书。
保存密钥
题目界面:
操作:docker pull 拉镜像并启动,以 root 进入容器:
复制密钥到 docker_sk 后解密: