2023熵密杯第二关简析

来到前端登录界面如下,需要输入用户名,用户证书文件和证书对应的私钥。

 从提示来看,证书文件要求是PEM格式证书,base64编码。其他的都还不知道。不急往下看,答案应该都隐藏在给出的线索里。

获得一个“数字签名前置系统调试数据包.pcapng”文件,其中包含数字证书内容如下。将这段内容复制下来,保持为cer1.crt文件。

-----BEGIN CERTIFICATE-----
MIIBpjCCAUugAwIBAgIRAIQyrttkXywULI3KhGNxYFYwCgYIKoEcz1UBg3UwPjEO
MAwGA1UEChMFQkNTWVMxDjAMBgNVBAMTBUJDU1lTMQ8wDQYDVQQqEwZHb3BoZXIx
CzAJBgNVBAYTAk5MMB4XDTIzMDcxNzAzMjMyNVoXDTI0MDcxNzAzMjMyNVowNTEV
MBMGA1UEChMMRXhhbXBsZSBJbmMuMQswCQYDVQQLEwJJVDEPMA0GA1UEAxMGYWRt
aW4xMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEdTKwJfeYUBsH3rw8KlRiabJX
z3KxNcH2MuYl7ol27RLS5/nVvvlrY2iw2Ylni+CS+htLoScXpEBsuMzkPjG3VKMz
MDEwDgYDVR0PAQH/BAQDAgKkMAwGA1UdEwEB/wQCMAAwEQYDKgMEBApxd2VydHl1
aW9wMAoGCCqBHM9VAYN1A0kAMEYCIQCP9wit9wKLNhDB7qzK50PuMldu0WhEFRuk
ZDXegNcpjQIhAK+fiviPZu53F7cAGck8VijLOJFfN0q7xJIqJ4T+nujr
-----END CERTIFICATE-----

windows系统中打开cer1.crt证书具体内容就出来了。根据证书中字段,可以指导使用者是admin1,公钥算法使用的是SM2。所以前台登录所使用的用户名就是admin1,证书文件自然也就是从cer1.crt做适当修改而来,至于证书对应的私钥肯定是无法通过公钥获得的,一个可能的方式是构造公私钥对替换原来的证书中的公钥。当然证书中的公钥不是说替换就替换的,证书中的指纹(CA的签名)验证会保证数字证书的完整性和真实性。除非应用系统实现没有正确验证数字证书的有效性,那就要看看后台验证过程代码。

 获得到一个“login.go”后台登录处理程序源代码文件,分析后发现果然后台并未验证证书签名的有效性,也就是说这个证书的公钥是可以被替换而不被感知到。于是这里就利用SM2算法工具生成公私密钥对,如下。这里私钥就是登录界面要填入的第三个参数。

私钥:2923BE84E16CD6AE529049F1F1BBE9EBB3A6DB3C870C3E99245E0D1C06B747DE

公钥:C4758AF4FAE1A4991C5D0DC80F3E3ADD8E4A20CE4AC3F1447EA27C2BC70B51CADAB2ACFF2E63638FA4124A8BB776B2AF821FA128FDEA97732E58021BBDA5A1A9

到现在,就剩下最后一步了,将构造的公钥替换cer1.crt的公钥。具体过程可以是将base64编码的数字证书转换成hex格式,找到0475......B754,替换成04C4......A1A9。

这里解释下数字证书里的公钥信息编码是04+64字节公钥, 也就是SM2公钥的未压缩模式。

再将hex转回base64编码(转换工具Base64),保存为cer2.crt证书文件,到此登录界面需要的信息就都具备成功。

用户名:admin1

公钥文件:cer2.crt

私钥信息: KSO+hOFs1q5SkEnx8bvp67Om2zyHDD6ZJF4NHAa3R94=

猜你喜欢

转载自blog.csdn.net/ryanzzzzz/article/details/132313360
今日推荐