cookielover
sign.py:
1 | #!/usr/bin/env sage |
pubkey.pem:
1 | -----BEGIN PUBLIC KEY----- |
题目实现了一个交互系统,即RSA的签名和验证。要获得flag,需要把’I love cookies.’对应的签名值发送给服务器验证,但后端有限制,包含’cookie’字段的信息不能给予签名。那么解决方案就是把I love cookies对应的long分拆为几段相乘,分几次签名,最后把得到的签名相乘模n即可。当我们把对应的long分解后发现,无论如何组合,至少会有一个部分转字节以后包含控制字符,而控制字符会引发return 0,签名中止。所以这里的解决方案是将能组合转为非控制字符的因子先组合,最后还剩下一个2,只需要找一个字符(比如, 对应的ascii码为44)和2相乘,相乘以后值为88,满足大于32,可以通过验证。但是这样三部分返回的签名值的乘积实际上是I love cookies 和,相乘的值的签名。要得到目的签名,还需要单独提交一次,去签名,返回的签名值的逆乘上前三部分的积就是我们要找的签名值。最后将这个签名值提交获得flag。
脚本来自于hash小可爱:
1 | from pwn import * |