[山海关crypto 训练营 day1]

本文介绍了在Cryptohack平台上进行的两道RSA相关挑战,包括获取公钥、密文、签名等操作,以及如何利用RSA数字签名的原理解密获取flag。第一题通过获取flag的密文并解密得到flag,第二题则需构造特定消息的签名匹配服务器的签名来验证所有权。

老大终于对队伍里的密码手下手了(不是。。
老大召集队伍里的密码手一起刷crypto hack,一起上大分。为了更好的记录本次的学习成果决定对学习当中遇到的问题和收获做一些整理也算是对最近焦虑和压抑的科研生活做个调剂,而且crypto hack这个平台在网上公开的wp比较少,大家一起刷一波也能整理出不少wp供其他同学学习和参考,也算是公者千古了(不是。。
给自己点小鼓励:你要做冲出的黑马 而不是坠落的星星。

Signing Server (60pt)

题目描述

在这里插入图片描述

题目源代码

#!/usr/bin/env python3

from Crypto.Util.number import bytes_to_long, long_to_bytes
from utils import listener



class Challenge():
    def __init__(self):
        self.before_input = "Welcome to my signing server. You can get_pubkey, get_secret, or sign.\n"

    def challenge(self, your_input):
        if not 'option' in your_input:
            return {
   
   "error": "You must send an option to this server"}

        elif your_input['option'] == 'get_pubkey':
            return {
   
   "N": hex(N), "e": hex(E) }

        elif your_input['option'] == 'get_secret':
            secret = bytes_to_long(SECRET_MESSAGE)
            return {
   
   "secret": hex(pow(secret, E, N)) }

        elif your_input['option'] == 'sign':
            msg = int(your_input['msg'], 16)
            return {
   
   "signature": hex(pow(msg, D, N)) }

        else:
            return {
   
   "error": "Invalid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值