/images/zsm.jpg

L3HCTF Wp

前言

密码这次真的简单吧xd,当作记录帖子了

题目

math_problem

task.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import gmpy2
from gmpy2 import *
from Crypto.Util.number import *
from random import randint
from gmpy2 import invert
from scret import flag

def myfunction(num):
    output = 0
    output=num**3
    return output

if __name__ == '__main__':
    flag_len = len(flag)
    p, q = getPrime(512), getPrime(512)

    while True:
        r = getPrime(512)
        R = bytes_to_long(str(r).encode())
        if isPrime(R):
            break

    n = p * q * r
    hint1 = R * r
    mod = myfunction(n)
    hint2 = pow(3*n+1, p % (2 ** 400), mod)
    m = bytes_to_long(flag)
    c = pow(m, 65537, n)

    print('All data:')
    print(f'n = {n}')
    print(f'c = {c}')
    print(f'hint1 = {hint1}')
    print(f'hint2 = {hint2}')

非预期

GCD把r求出来,然后直接求解

Study Golang「2」

study golang / demo3

mysql+gorm+MVC

项目架构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
D:.
├─ go.mod
├─ go.sum
├─cmd
│  └─main
│          main.go
└─pkg
    ├─config
    │      app.go
    ├─controllers
    │      book-controller.go
    ├─models
    │      book.go
    ├─routes
    │      bookstore-routes.go
    └─utils
            utils.go

这里直接按照mvc思想去编写了,互相引用比较多,可以初始化规范一点了go mod init github.com/your_username/go-bookstore,但是我比较懒,所以就没有这样(

Study golang「1」

study golang / demo1

作为一个初学者,跟着佬的步伐写五个小demo玩玩,熟悉一下整个的开发方式和流程

项目架构

1
2
3
4
5
.
├── main.go
└── static
    ├── form.html
    └── index.html

最初级的东西了,这里不用gin练练代码,静态文件就不写了,自由发挥了bro

格学习笔记

前言

用来记录我的格密码学习,参考资料是NSS工坊和一些blog

NTRU

1.入门题

task.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import gmpy2
from secret import flag
from Crypto.Util.number import *

f = bytes_to_long(flag)
p = getPrime(512)
g = getPrime(128)
h = gmpy2.invert(f+20192020202120222023, p) * g % p

print('h =', h)
print('p =', p)

想要flag就要求出f,f=f+20192020202120222023,最后减去这个数就好了,那么已知的式子就变成了

MT19937

算法描述

主要步骤

  1. 利用 seed 初始化寄存器状态
  2. 对寄存器状态进行旋转
  3. 根据寄存器状态提取伪随机数

初始化可能用的是固定的种子,也有可能是服务器时间戳,生成一个长度为624的状态数组,填充完后作为初始状态