[SWPUCTF 2021 新生赛]gift_F12
Ctrl+U查看前端源码再Ctrl+F搜搜Flag即可
[SWPUCTF 2021 新生赛]jicao
|
代码审计,以post方式传id=wllmNB
和以get方式传json={"x":"wllm"}
即可
[SWPUCTF 2021 新生赛]easy_md5
|
要求:name
的值不等于password
的值且其md5后相等
两种方法:
Ctrl+U查看前端源码再Ctrl+F搜搜Flag即可
|
代码审计,以post方式传id=wllmNB
和以get方式传json={"x":"wllm"}
即可
|
要求:name
的值不等于password
的值且其md5后相等
两种方法:
附件内容:
import os |
那解题思路就是将其中设计的步骤反着来一遍
以下由三种方法计算fibo(1000)
由于直接递归1000不可行
附件内容:
from Crypto.Util.number import bytes_to_long,inverse,getPrime |
既然题目已经提醒了是RSA
的相关内容那就直接开搞即可
关键点:各个参数的值(即公钥 密钥)、欧拉定理:通用$phi=(p−1)(q−1)$
from Crypto.Util.number import * |
import libnum |
看上述代码感觉老朋友了,详情可以看上一篇的baigeiRSA
size = 256 |
size=256
定义了生成的素数p
和q
的比特长度
e=65537
是RSA公钥指数,是一个固定的值
p = number.getPrime(size) |
生成 RSA密钥
其中设计两个公式:
$$avg = \frac{p+q} {2}$$
import libnum |
size = 128 |
size
处设置了生成的素数p
和q
的比特长度
e=65537
:RSA的公钥指数,这是一个常用的固定值
p = number.getPrime(size) |
number.getPrime(size)
生成一个size
比特的随机素数
打开题目,给了以下代码:
|
分析:
strlen()
函数返回字符串的长度
strrev()
反转字符串顺序
This is an example:
|
输出反转字符串 “!dlroW olleH”:
substr()
函数返回字符串的一部分。substr(string,start,length)
tips:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
<?php echo substr("Hello world",6); ?>
从字符串中返回 “world”:
ord()
函数返回字符串中第一个字符的 ASCII 值。
chr()
函数从指定 ASCII 值返回字符。并可以指定ASCII是十进制或是十六进制或是八进制。
“.” 是字符运算符,作用是把两个字符串连接起来,其使用方法:首先创建一个PHP示例文件;然后定义两个变量;最后通过“$result.$result”方式将两个变量连接起来即可
str_rot13()
函数对字符串执行 ROT13 编码。
ROT13 编码是把每一个字母在字母表中向前移动 13 个字母得到。数字和非字母字符保持不变。
综上,题目提示我们逆向加密算法,也就是说第一步加密变为最后一步,以此类推,那可以构造出逆向后的代码
|
小王读了盖茨比深受震撼,于是摘录本书并效仿原作者为你加密留了一段言,但他忘记给你iv了,请问你可以恢复出来原文吗
(得到的flag内容用CatCTF{}包上提交)
附件内容为python源代码程序,对其进行分析:
from Crypto.Cipher import AES |
这段代码实现了一个基于AES加密的自定义加密方案,结合了ECB模式和CBC模式的某些特性,明文按16字节分组进行加密,打印出key和密文,iv(偏移量)未知,需要还原明文。可以发现本题是多次使用同样的流密码。
所以本题其实是利用利用MTP攻击来求解,比较好的两篇文章可以参考
[参考一](Many-Time-Pad 攻击)
参考二
exp:
# Python3 |
符号:
⊕ 代表异或
C1 代表密文
M1 代表明文
性质:
Many-Time-Pad (多时间垫) 攻击是一种针对多次使用相同密钥的流密码(如一次性密码本,One-Time Pad)的密码分析技术。其核心原理是利用密钥重用导致的明文信息泄露,通过数学和统计方法恢复部分或全部明文。以下是其核心原理和步骤:
1. 一次性密码本(OTP)的安全前提
OTP的安全性是建立在:
如图所示,下面这只好心的猫猫给你送来了跨年礼物。由于礼物不好拿,所以猫猫把礼物平均分成了四份,但是其中一份不小心掉在地上散落成了无数片,变成了 1 - 1/3 + 1/5 - 1/7 + …
聪明的你能算出或猜出猫猫的礼物是什么吗?
flag示例: CatCTF{apple}
CatCTF{banana}
关键:Gregory-Leibniz 公式
德国数学家莱布尼茨(Leibniz)于 1674 年曾提出 Gregory-Leibniz 公式来计算π:
$π / 4 = 1 − 1 / 3 + 1 / 5 − 1 / 7 + 1 / 9 + . . . π/4 = 1 - 1/3 +1/5 - 1/7 + 1/9+ …π/4=1−1/3+1/5−1/7+1/9+…$
得到flag:CatCTF{pie
源码分析:
function checkFile() { |
在源码中我们可以看到其在客户端使用了js对不合法图片进行了检查,因此只需要在Firefox浏览器中禁用js即可绕过
源码分析:
$is_upload = false; |