[ACTF新生赛2020]crypto-rsa3

BUUCTF在线评测 (buuoj.cn)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7PU1Sry-1666703311687)(assets/image-20221025204255-haoq9za.png)]​

附件

output文件

177606504836499246970959030226871608885969321778211051080524634084516973331441644993898029573612290095853069264036530459253652875586267946877831055147546910227100566496658148381834683037366134553848011903251252726474047661274223137727688689535823533046778793131902143444408735610821167838717488859902242863683
1457390378511382354771000540945361168984775052693073641682375071407490851289703070905749525830483035988737117653971428424612332020925926617395558868160380601912498299922825914229510166957910451841730028919883807634489834128830801407228447221775264711349928156290102782374379406719292116047581560530382210049

rsa代码

from flag import FLAG
from Cryptodome.Util.number import *
import gmpy2
import random

e=65537
p = getPrime(512)
q = int(gmpy2.next_prime(p))
n = p*q
m = bytes_to_long(FLAG)
c = pow(m,e,n)
print(n)
print(c)

分析

可以得到output文件地两行数据代表地就是n、c

也可根据代码分析得到flag是跟m有关,即为:long_to_bytes(m),现在已知n、c、e,求m

flag=long_to_bytes(m)

解题脚本

import libnum
import gmpy2
import random
p = 13326909050357447643526585836833969378078147057723054701432842192988717649385731430095055622303549577233495793715580004801634268505725255565021519817179231
q = 13326909050357447643526585836833969378078147057723054701432842192988717649385731430095055622303549577233495793715580004801634268505725255565021519817179293
e = 65537
c = 1457390378511382354771000540945361168984775052693073641682375071407490851289703070905749525830483035988737117653971428424612332020925926617395558868160380601912498299922825914229510166957910451841730028919883807634489834128830801407228447221775264711349928156290102782374379406719292116047581560530382210049
n = 177606504836499246970959030226871608885969321778211051080524634084516973331441644993898029573612290095853069264036530459253652875586267946877831055147546910227100566496658148381834683037366134553848011903251252726474047661274223137727688689535823533046778793131902143444408735610821167838717488859902242863683
fn = (p - 1) * (q - 1)
d = gmpy2.invert(e, fn)
m = int(pow(c,d,n))
print(libnum.n2s(m))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bqmPsimJ-1666703311689)(assets/image-20221025210546-89resq9.png)]​

值得庆祝,这辈子第一次完全靠自己写脚本拿到flag!!!!!!🦃

### BUUCTF ACTF 新生 2020 Upload 题目解题报告 #### 文件上传漏洞概述 文件上传漏洞是指攻击者能够通过应用程序中的文件上传功能,向服务器上传恶意文件并执行特定操作的一种安全缺陷。这类漏洞通常涉及绕过文件类型验证、大小限制以及路径遍历等问题。 #### 题目描述 本题目来自BUUCTF平台上的ACTF新生2020事,名为`Upload-1`。参选手需要利用页面中存在的文件上传机制实现对目标系统的控制或数据获取[^1]。 #### 页面交互分析 访问给定链接后会看到一个带有灯泡图标的网页,在悬停于该图标之上时会出现用于触发文件选择对话框的区域。此设计隐藏了实际的功能入口点,增加了挑战难度[^2]。 #### 利用方法 为了成功完成任务,可以采取以下策略: - **准备测试环境**:搭建本地模拟服务端口监听工具(如Burp Suite),以便监控HTTP请求过程。 - **构造特殊文件**:创建一个小巧精悍的一句话PHP木马脚本作为待上传对象;确保其内容合法且不会被简单过滤规则阻挡。 ```php <?php @eval($_POST[&#39;cmd&#39;]);?> ``` - **规避检测措施**:修改文件扩展名或将有效载荷嵌入图片元数据内等方式尝试绕过潜在的安全防护手段。 - **提交表单并确认响应结果**:按照提示指引完成整个流程直至获得预期反馈信息为止。 #### 获取Flag 一旦上述步骤顺利完成,则可通过蚁剑等客户端软件建立远程连接至已植入webshell的目标主机,并在其根目录下定位到名为`flag`的关键文档。双击打开即可见最终答案字符串:`flag{d752d02c-324d-47e7-9b05-87d652492eb4}`[^3]。 #### 技术要点总结 此类竞项目主要考察参与者对于常见Web应用风险的认知程度及其动手实践能力,具体包括但不限于以下几个方面: - 对各种编程语言特性的深刻理解; - 掌握多种调试技巧以辅助逆向工程工作; - 能够灵活运用第三方插件提高效率降低复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值