WebGoat General Crypto Basics

目录

第2页

第3页

第4页

第6页


第2页

这一页是讲base64编码和Basic Authentication的

 

简单来说Basic Authentication中使用了base64编码,以本页的题目举例,如果有个HTTP头长这样

Authorization: Basic ZmFuY3llbGU6c2VjcmV0

那这个网站就是用了Basic Authentication,并且ZmFuY3llbGU6c2VjcmV0就是base64编码的用户名和密码,格式是 用户名:密码

网上随便找个base64解码器解码,或者用burpsuite的decoder模块也可以。

比如下图用的是burpsuite的decoder模块,在上面的框框中输入base64编码,右边点击decode as,然后选base64,就解码啦

结果是 fancyele:secret

根据之前说的格式,用户名是fancyele,密码是secret

过关啦

第3页

这一页简单介绍了其他几种编码,包括XOR

其实我有点疑惑为啥XOR算编码不算加密,毕竟人家也是要密钥的。。

而且题目可难住我了。。无语。。只告诉了编码后的密码是 {xor}Oz4rPj0+LDovPiwsKDAtOw==,也不说密钥是什么,在网上找XOR解码器都是要输入密钥的,没有密钥怎么玩啊

然后我灵机一动,看到上面介绍的 IBM WebSphere Application Server 默认用xor编码保存密码,和题目一联系,似乎可以直接搜索“WebSphere解码”,“WebSphere password”之类的,倒是能找到一个,但是不好使。。

万念俱灰之下,我只能直接搜索WebGoat Crypto Basics。。中文的没搜到,但是好歹搜到个日文的。。感谢伟大的google翻译

这篇日文的通关说明(https://guri6cerin.hatenablog.com/entry/2020/09/18/WebGoat5%3A_Crypto_Basics)里面给了一个网站(http://www.poweredbywebsphere.com/decoder.html),确实可以解码WebSphere password

第4页

本页讲的是散列算法,本页的两题都用下面这个在线破解工具进行破解,破解的时候类型选自动就可以

https://cmd5.com/

注意,应该是每次登录的散列都不同,中间要是退出了webgoat,估计要再重新破解一下。

第一题在上述网页破解一下:

第二题在上述网页破解一下:

过关啦~

第6页

我的天,这页的题目搞得我累死了,终于搞出来了。。

而且我刚发现题目名称下面有个show hints的按钮,可以给一些关于答题的提示

这页第一个框要填公钥的模,第二个框要填对模的签名。

但其实公钥和私钥的模是一样的,所以这页其实并不需要先得到公钥,直接用私钥求模,再用私钥把模签名就好了。

先来求模:

用下面这个openssl命令,openssl工具kali linux上是预安装的,直接用就好。

$ openssl rsa -in test.key -modulus

test.key是一个文件,里面是本页题目中给出的私钥,内容如下:

-----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCrwtG3vMddDbYYI36EETM21NMH1dUTLJGISfxiOsfU57v7DNqtKsTjvjfJW+LljHPGKGDkKaBVtPDDapSXZ5Fp64+wpCJVEO6dncwt23SISWclmRba/R8sgEACSXfa6OFdzgdcPqrCaeBnAejgKnIKI5QhP97wpadXgtclkNywcPR6qf7bsITtrTTHYjc1U5MIWveF0n4oAVqO14LMyFjayml66xw/9mu3SoHo5uyrbx+3Mla95AoGjRRneGVMLPB+9grBkkjOZN1MuyHi4dWmohd7RxoRYc7E/BTS3pxHKIuZfayIBcmWR+Hddh/vh3eyXE53YKHeTIqp5OswTy83AgMBAAECggEAB3Qg3bRXgnZB3LJNnzWP32VE8yYYZQieGCf9x9V9LoQP6EkahEFC4g8zJI3UPtnlfEfsTHpx9sYvXIuXfyqDaPFL/wJgawidEkHyxlqrp+5nh34pO7+YRroaDP9bMCjC/usd7qbZii5GCrJOhMvSvxXkK70104Ocy3NmGr86lH2AI9mmCdT9u9PzpXaPo2WR3LbYgpCzCAvtT5jN/J3dQb/6ok2SZNK2sFJhdvcFcZcOf6XQV9Jdher2sQLPINMn/Zt+djjuDrjjnj1l+3Ix6vrwu6DIaVoGfmK/9hfCctbxwreNRuWL4QkPalV48RILUtvGdAOf1GgEK9/ZQwZjIQKBgQDd++UMRcqPy2LJz9dNikp8v0mQTUOe/gogdqUuJhH+YLZbAQPGHni0uw6Qevd/wi2XHBkXiIfuWjO2CPNKosfVH2SCUWgxXJcZEmVm03aAFE+8ujMr3rB9oCNAi6OvJswOfEDxvVrludD3UpH9Yq2E4wbZM8IMk/DXNtaSEUKy/QKBgQDGFMB0+QBH34dQjjUex7szmryuBmbDAyxkn79UhfXqLI4UwHTGnOQDw5vq08mVLrOp2QALNo5lGWb+9ONtJcTO+P+0NePa/IUvPjQ5uVmRmF2KxUMYIekjvWYeu+ndaPeecywq6Kh62jg5zzjQOn1g5+YVJehopAas+m92BvTjQwKBgQC5tf8NoWWxnwnqpIMPT965Np8opjsoTIfUWO4gCaGMGwT0ZYjuupdpPAUXQojEzYKupMcpNQPjmHsik6JWkpBz8Gt5yvlMMpYGV6mVuNuuk0+SKISe8xLcRpi3axtpcR/ODo2WsD/XaPk1sFKKlX9taTFVjUOOmkYnBq3ETcRrUQKBgQCxqVk5UUCkNmPqp7ITaneIgIgs2kb/MHB3zCRSzlhT8iR5jmju3zdP/PlytQSADsRMWfrFE+jB2vfbQ5BcjFyqewD2BMPa3VUjm3pCL/GbOfrkhat5EKlISg83D7phwU0fTBPYZJcAoYt+plNByMQ9z6E5ZKfAeyYVrgWc6f5pewKBgQCk9TQJLErzyC0N+4aoShHLjIn6RZzlzKY9XumAuVsqLhsb3MmzQtiz6KgBxIaNrN0mdSz0jxuWxgNI/tLuRaFPZhyY+UIgTeZ0j36D3PRhb40yZ1Zymj8lICvAjcw1DcqsG8CHjy9nJ2sGgxTq1hl6BFaPkzS2dG5E3ZIW81Vdng== -----END PRIVATE KEY-----

得到的结果如下:

Modulus=ABC2D1B7BCC75D0DB618237E84113336D4D307D5D5132C918849FC623AC7D4E7BBFB0CDAAD2AC4E3BE37C95BE2E58C73C62860E429A055B4F0C36A9497679169EB8FB0A4225510EE9D9DCC2DDB74884967259916DAFD1F2C8040024977DAE8E15DCE075C3EAAC269E06701E8E02A720A2394213FDEF0A5A75782D72590DCB070F47AA9FEDBB084EDAD34C76237355393085AF785D27E28015A8ED782CCC858DACA697AEB1C3FF66BB74A81E8E6ECAB6F1FB73256BDE40A068D146778654C2CF07EF60AC19248CE64DD4CBB21E2E1D5A6A2177B471A1161CEC4FC14D2DE9C47288B997DAC8805C99647E1DD761FEF8777B25C4E7760A1DE4C8AA9E4EB304F2F37
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAq8LRt7zHXQ22GCN+hBEzNtTTB9XVEyyRiEn8YjrH1Oe7+wza
rSrE4743yVvi5Yxzxihg5CmgVbTww2qUl2eRaeuPsKQiVRDunZ3MLdt0iElnJZkW
2v0fLIBAAkl32ujhXc4HXD6qwmngZwHo4CpyCiOUIT/e8KWnV4LXJZDcsHD0eqn+
27CE7a00x2I3NVOTCFr3hdJ+KAFajteCzMhY2sppeuscP/Zrt0qB6Obsq28ftzJW
veQKBo0UZ3hlTCzwfvYKwZJIzmTdTLsh4uHVpqIXe0caEWHOxPwU0t6cRyiLmX2s
iAXJlkfh3XYf74d3slxOd2Ch3kyKqeTrME8vNwIDAQABAoIBAAd0IN20V4J2Qdyy
TZ81j99lRPMmGGUInhgn/cfVfS6ED+hJGoRBQuIPMySN1D7Z5XxH7Ex6cfbGL1yL
l38qg2jxS/8CYGsInRJB8sZaq6fuZ4d+KTu/mEa6Ggz/WzAowv7rHe6m2YouRgqy
ToTL0r8V5Cu9NdODnMtzZhq/OpR9gCPZpgnU/bvT86V2j6Nlkdy22IKQswgL7U+Y
zfyd3UG/+qJNkmTStrBSYXb3BXGXDn+l0FfSXYXq9rECzyDTJ/2bfnY47g644549
ZftyMer68LugyGlaBn5iv/YXwnLW8cK3jUbli+EJD2pVePESC1LbxnQDn9RoBCvf
2UMGYyECgYEA3fvlDEXKj8tiyc/XTYpKfL9JkE1Dnv4KIHalLiYR/mC2WwEDxh54
tLsOkHr3f8ItlxwZF4iH7loztgjzSqLH1R9kglFoMVyXGRJlZtN2gBRPvLozK96w
faAjQIujrybMDnxA8b1a5bnQ91KR/WKthOMG2TPCDJPw1zbWkhFCsv0CgYEAxhTA
dPkAR9+HUI41Hse7M5q8rgZmwwMsZJ+/VIX16iyOFMB0xpzkA8Ob6tPJlS6zqdkA
CzaOZRlm/vTjbSXEzvj/tDXj2vyFLz40OblZkZhdisVDGCHpI71mHrvp3Wj3nnMs
Kuioeto4Oc840Dp9YOfmFSXoaKQGrPpvdgb040MCgYEAubX/DaFlsZ8J6qSDD0/e
uTafKKY7KEyH1FjuIAmhjBsE9GWI7rqXaTwFF0KIxM2CrqTHKTUD45h7IpOiVpKQ
c/Brecr5TDKWBleplbjbrpNPkiiEnvMS3EaYt2sbaXEfzg6NlrA/12j5NbBSipV/
bWkxVY1DjppGJwatxE3Ea1ECgYEAsalZOVFApDZj6qeyE2p3iICILNpG/zBwd8wk
Us5YU/IkeY5o7t83T/z5crUEgA7ETFn6xRPowdr320OQXIxcqnsA9gTD2t1VI5t6
Qi/xmzn65IWreRCpSEoPNw+6YcFNH0wT2GSXAKGLfqZTQcjEPc+hOWSnwHsmFa4F
nOn+aXsCgYEApPU0CSxK88gtDfuGqEoRy4yJ+kWc5cymPV7pgLlbKi4bG9zJs0LY
s+ioAcSGjazdJnUs9I8blsYDSP7S7kWhT2YcmPlCIE3mdI9+g9z0YW+NMmdWcpo/
JSArwI3MNQ3KrBvAh48vZydrBoMU6tYZegRWj5M0tnRuRN2SFvNVXZ4=
-----END RSA PRIVATE KEY-----

模就是“Modulus=”之后,“writing RSA key”之前的那串十六进制字符。把这串字符复制粘贴到第一个框。

下面来取得模的签名:

用下面这个命令,其中echo的-n参数表示不输出末尾的换行符,双引号中的内容是上一步中得到的模。

$ echo -n "ABC2D1B7BCC75D0DB618237E84113336D4D307D5D5132C918849FC623AC7D4E7BBFB0CDAAD2AC4E3BE37C95BE2E58C73C62860E429A055B4F0C36A9497679169EB8FB0A4225510EE9D9DCC2DDB74884967259916DAFD1F2C8040024977DAE8E15DCE075C3EAAC269E06701E8E02A720A2394213FDEF0A5A75782D72590DCB070F47AA9FEDBB084EDAD34C76237355393085AF785D27E28015A8ED782CCC858DACA697AEB1C3FF66BB74A81E8E6ECAB6F1FB73256BDE40A068D146778654C2CF07EF60AC19248CE64DD4CBB21E2E1D5A6A2177B471A1161CEC4FC14D2DE9C47288B997DAC8805C99647E1DD761FEF8777B25C4E7760A1DE4C8AA9E4EB304F2F37" | openssl dgst -sign test.key -sha256 | base64

得到的结果如下:

TL9DuXgho/8yL2l7iyb2Sk0td25Ai5B9+074ABVaHz3uByb+ZKdbujjUmRxLJ+Lvb6CztlNXsWQc
Z+mF1S/3/Uv26VU1/NqFE7LISOFtt1AEnqswuX6k3YTJClHi07cFTlybhYlTAJdrJY90ewwCaAyN
IiD9Sh70XG4zV4yW+aCJFTMPFeMJEkMuS6/u154YLPEEBVNdrry3c9UIlLfpdaKhEFkr6gSKM6P/
kfVMo1KtTpDH3O8MVaPnJ2mrJUFLJt02RoOrR+tRP9OsDY1cku4OUQtAnDjVytCwDk42PePb4cb/
0wuWI6sMmFE8JP8hLRlnw1bn2R9CpiWyClj4Ig==

然后我直接把这段结果贴到第二个框里面,提交之后回显提示签名与模不匹配,我就在这边卡了好久。。。

直到我想到一个办法,通过chrome的开发者工具看报错信息:

这个叫verify的http报文的response中提示base64字符(20\n\t)不合法,我一想,哎呀,估计是因为换行了。。。

再看header,请求正文的form data中signature果然由很多空格

所以后来我把上述base64编码的签名结果先复制到文本编辑器中,去掉换行,然后再粘贴到第二个框框,提交,就通过了。

注意,这题也是每次登录题目中的私钥都不一样,一定要自己走一遍。

 

还剩个第8页,需要在安装环境上启动docker容器,并在容器里面操作。由于我目前是用的在线靶机,所以暂时玩不了了,这题好像还挺有意思,等之后自己安装好webgoat再补吧。。

 

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值