寒假1.23

题解

web:[极客大挑战 2019]Secret File(文件包含漏洞)

打开链接是一个普通的文字界面

查看一下源代码

 发现一个链接,点进去看看

再点一次看看,没什么用

仔细看,有一个问题,当点击./action.php时,跳转到了./end.php界面

我们直接把end换成action试试,可是每一次访问又自动跳转到end.php了,在原界面查看也是一样,老是跳转

中间肯定有一个界面,只是我们无权访问,使用bp抓包试试

访问一下这个文件试试

访问一下flag.php ,被隐藏了,但是看源代码也是什么都没有

再返回上一个界面看看,在url中得到一个变量file,如果file中含有../、tp、input、data等字符串,则输出out,否则执行file所指的文件发现过滤了部分关键字,但是并未过滤filter,那么可以尝试用php://filter来获取flag.php的内容

构造payload:将源代码转换为base64编码

secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php

 base64解码

misc:buuctf另一个世界

附件下载,是一张图片

结合题目所说的另一个世界,考虑是图片隐写,使用010打开,拉到最后有一串稀奇古怪的二进制

转成字符串试试

提交一下试试,居然真的就是flag

crypto:

昨天的RSA没整完,接着搞,搞完了就不兑换reverse和pwn了

BUUCTF-RSA2(低解密指数攻击)

下载附件在记事本中打开,得到两个巨大的n和e

用rsa-wiener-attack得出d

脚本

N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471
e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085

d = 8920758995414587152829426558580025657357328745839747693739591820283538307445
dd = hex(d)
dd = dd+"L"
print(dd)
import hashlib
flag = "flag{" + hashlib.md5(dd.encode("utf-8")).hexdigest() + "}"
print(flag)

 BUUCTF [BJDCTF2020]rsa_output

一开始没看懂这是个啥,看了大佬的wp才知道{}中的是两个n和e,massage是两个c,仔细看,两个n还是相同的

既然是知道了c1,c2和e1,e2以及一个共同的n,那么尝试共模攻击

脚本:

import gmpy2
from Crypto.Util.number import getPrime,long_to_bytes

e1 = 2767
e2 = 3659
n = 21058339337354287847534107544613605305015441090508924094198816691219103399526800112802416383088995253908857460266726925615826895303377801614829364034624475195859997943146305588315939130777450485196290766249612340054354622516207681542973756257677388091926549655162490873849955783768663029138647079874278240867932127196686258800146911620730706734103611833179733264096475286491988063990431085380499075005629807702406676707841324660971173253100956362528346684752959937473852630145893796056675793646430793578265418255919376323796044588559726703858429311784705245069845938316802681575653653770883615525735690306674635167111

c1 = 20152490165522401747723193966902181151098731763998057421967155300933719378216342043730801302534978403741086887969040721959533190058342762057359432663717825826365444996915469039056428416166173920958243044831404924113442512617599426876141184212121677500371236937127571802891321706587610393639446868836987170301813018218408886968263882123084155607494076330256934285171370758586535415136162861138898728910585138378884530819857478609791126971308624318454905992919405355751492789110009313138417265126117273710813843923143381276204802515910527468883224274829962479636527422350190210717694762908096944600267033351813929448599
c2 = 11298697323140988812057735324285908480504721454145796535014418738959035245600679947297874517818928181509081545027056523790022598233918011261011973196386395689371526774785582326121959186195586069851592467637819366624044133661016373360885158956955263645614345881350494012328275215821306955212788282617812686548883151066866149060363482958708364726982908798340182288702101023393839781427386537230459436512613047311585875068008210818996941460156589314135010438362447522428206884944952639826677247819066812706835773107059567082822312300721049827013660418610265189288840247186598145741724084351633508492707755206886202876227

_,s1, s2 = gmpy2.gcdext(e1, e2)
m = pow(c1, s1, n) * pow(c2, s2, n) % n
print(long_to_bytes(m))

 BUUCTF RSA2(dp泄露)

 下载附件,题目给出了e,n,dp,c

常规思路是将n分解为p和q,但是这里的n太大,不好分解,而这里给出了dp,可以利用bp写脚本(公式代换在后面)

import gmpy2
from Crypto.Util.number import long_to_bytes

e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657

c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751

for i in range(1, e):
    if (dp * e - 1) % i == 0:
        if n % (((dp * e - 1) // i) + 1) == 0:
            p = ((dp * e - 1) // i) + 1
            q = n // (((dp * e - 1) // i) + 1)
            d = gmpy2.invert(e, (p-1)*(q-1))
            m = pow(c, d, n)

print(m)
print(long_to_bytes(m))

 BUUCTF RSA1

题目给出p,q,dp,dq,c,没有e

 脚本:

import gmpy2
from Crypto.Util.number import long_to_bytes
p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
I = gmpy2.invert(q,p)
m1 = pow(c,dp,p)
m2 = pow(c,dq,q)
m = (((m1-m2)*I)%p)*q+m2
print(long_to_bytes(m))

 BUUCTF rabbit

下载附件,得到密文

直接在线解密得到flag

知识点

web

php filter协议:一种过滤器,可以作为一个中间流来过滤其他的数据流

作用:读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码,rot13处理等

使用方法:一般语法为

php://filter/过滤器|过滤器/resource=待过滤的数据流

其中过滤器可以设置多个,按照链式的方式依次对数据进行过滤处理

e.g.对<?php phpinfo();?>这个字符串进行了两次base64编码处理

echo file_get_contents("php://filter/read=convert.base64-encode|convert.base64-encode/resource=data://text/plain,<?php phpinfo();?>");

 crypto

5.低解密指数攻击(维纳攻击)

适用情况:e很大,解密指数d较小,公钥e和模数n是公开的

原理:

ed ≡ 1 (mod φ(n)),其中e是公钥的加密指数,d是私钥的解密指数,φ(n)是n的欧拉函数值(即(p-1)(q-1))。当d较小时,攻击者可以通过对e/N(N=pq)进行连分数展开,找到一串数的分母,这个分母很有可能就是d。

工具:rsa-wiener-attack

下载工具后使用wiener攻击脚本得出d的值(注意要将脚本和rsa-wiener-attack的py文件放在同一个目录下)

import  RSAwienerHacker
n = 
e = 
d =  RSAwienerHacker.hack_RSA(e,n)
if d:
    print(d)

脚本:

N = 
e = 

d = 
dd = hex(d)
dd = dd+"L"
print(dd)
import hashlib
flag = "flag{" + hashlib.md5(dd.encode("utf-8")).hexdigest() + "}"
print(flag)

具体原理参考:RSA加密与解密(一)_rsa解密-CSDN博客

6.共模攻击

适用情况:多组c,e但模数n相同,且e之间最好互质

原理:当多个密文使用相同的n进行加密时,可能通过密文之间的关系来获取明文信息,而无需知道私钥

c1 = m^e1 mod n    =>c1^s1 = m^(e1*s1) mod n

c2 = m^e2 mod n    =>c2^s2 = m^(e2*s2) mod n

两者相乘,通过扩展欧几里得定理,我们可知e1与e2互质,必存在s1和s2使e1*s1+e2*s2=1

由此可求出相对应的s1和s2.

m=(c1*s1+c2*s2)%n

 脚本:

import gmpy2
from Crypto.Util.number import getPrime,long_to_bytes

e1 = 
e2 = 
n = 

c1 = 
c2 = 

_,s1, s2 = gmpy2.gcdext(e1, e2)
m = pow(c1, s1, n) * pow(c2, s2, n) % n
print(long_to_bytes(m))

7.dp泄露

适用情况:题目提供dp或dq

原理:

dp=d%(p-1)

d = dp + k1 * (p-1)

d * e = 1 + k2(p-1)(q-1)

把第二个式子的d代换掉:

e * (dp + k1(p-1)) = 1 + k2(p-1)(q-1)

两边同时对(p-1)取模,消去k

e * dp % (p - 1) = 1

e * dp = 1 + k(p - 1)

再通过爆破k的方式求出p,进而求出d

 脚本:

import gmpy2
from Crypto.Util.number import long_to_bytes

e =
n = 
dp = 

c = 

for i in range(1, e):
    if (dp * e - 1) % i == 0:
        if n % (((dp * e - 1) // i) + 1) == 0:
            p = ((dp * e - 1) // i) + 1
            q = n // (((dp * e - 1) // i) + 1)
            d = gmpy2.invert(e, (p-1)*(q-1))
            m = pow(c, d, n)

print(m)
print(long_to_bytes(m))

8.dp,dq同时泄露

原理:

m1 = c^dpmodp

m2 = c^dqmodq

m = (((m1-m2)*I)%p)*q+m2

其中I为对pq求逆元

脚本:

import gmpy2
from Crypto.Util.number import long_to_bytes
p = 
q = 
dp = 
dq = 
c = 
I = gmpy2.invert(q,p)
m1 = pow(c,dp,p)
m2 = pow(c,dq,q)
m = (((m1-m2)*I)%p)*q+m2
print(long_to_bytes(m))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959937.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式版本控制系统:Git

1 Git概述 Git官网&#xff1a;https://git-scm.com/ Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目Git易于学习&#xff0c;占地面积小&#xff0c;性能极快。它具有廉价的本地库、方便的暂存区域和多个工作流分支等特性…

< OS 有关 > 阿里云:轻量应用服务器 的使用 :轻量化 阿里云 vpm 主机

原因&#xff1a; &#xff1c; OS 有关 &#xff1e; 阿里云&#xff1a;轻量应用服务器 的使用 &#xff1a;从新开始 配置 SSH 主机名 DNS Tailscale 更新OS安装包 最主要是 清除阿里云客户端这个性能杀手-CSDN博客 防止 I/O 祸害系统 操作&#xff1a; 查看进程&#x…

工业相机 SDK 二次开发-Sherlock插件

本文介绍了 sherlock 连接相机时的插件使用。通过本套插件可连接海康的工业相机。 一&#xff0e;环境配置 1. 拷贝动态库 在用户安装 MVS 目录下按照如下路径 Development\ThirdPartyPlatformAdapter 找到目 录为 DalsaSherlock 的文件夹&#xff0c;根据 Sherlock 版本找到…

为什么机器学习中梯度下降是减去斜率,而不是按照其数学意义减去斜率的倒数

做个简单假设&#xff0c;Loss函数的某一个参数的函数曲线是二次方程&#xff0c;其导数函数为 r 2 ∗ w r 2*w r2∗w 按照斜率意义来看&#xff0c;要减去斜率倒数 降低LOSS需要将w1更新为w2&#xff0c;所以更新公式为 w w − Δ L Δ w w w - \frac{\Delta L}{\Delta w…

Linux高级--3.3.2 自定义协议设计--ProtoBuf

一、自定义协议设计的必要性 自定义通信协议通常有以下几个原因&#xff0c;尤其在IM即时通信、节点服务器、HTTP协议、Nginx、Redis协议、SOME/IP协议和DoIP协议等场景中&#xff0c;设计和使用自定义协议能带来特定的优势&#xff1a; 1. 性能优化 更高效的资源利用&#…

技术总结:FPGA基于GTX+RIFFA架构实现多功能SDI视频转PCIE采集卡设计方案

目录 1、前言工程概述免责声明 3、详细设计方案设计框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBFDMA图像缓存RIFFA用户数据控制RIFFA架构详解Xilinx 7 Series Integrated Block for PCI ExpressRIFFA驱动及其安装QT上位机HDMI输出RGB转BT…

docker 部署 java 项目详解

在平常的开发工作中&#xff0c;我们经常需要部署项目&#xff0c;开发测试完成后&#xff0c;最关键的一步就是部署。今天我们以若依项目为例&#xff0c;总结下部署项目的整体流程。简单来说&#xff0c;第一步&#xff1a;安装项目所需的中间件&#xff1b;第二步&#xff1…

动手学图神经网络(2):跆拳道俱乐部案例实战

动手学图神经网络&#xff08;2&#xff09;&#xff1a;跆拳道俱乐部案例实战 在深度学习领域&#xff0c;图神经网络&#xff08;GNNs&#xff09;能将传统深度学习概念推广到不规则的图结构数据&#xff0c;使神经网络能够处理对象及其关系。将基于 PyTorch Geometric 库&a…

Elastic Agent 对 Kafka 的新输出:数据收集和流式传输的无限可能性

作者&#xff1a;来 Elastic Valerio Arvizzigno, Geetha Anne 及 Jeremy Hogan 介绍 Elastic Agent 的新功能&#xff1a;原生输出到 Kafka。借助这一最新功能&#xff0c;Elastic 用户现在可以轻松地将数据路由到 Kafka 集群&#xff0c;从而实现数据流和处理中无与伦比的可扩…

1.25学习

web bugku-源代码 打开环境后看到了一个提交的界面&#xff0c;我们根据题目查看源代码&#xff0c;看到了js代码&#xff0c;其中有几处是url编码&#xff0c;我们对其进行解码&#xff0c;后面的unescape&#xff08;&#xff09;函数就是将p1解码以及%35%34%61%61%32p2解码…

Hive详细讲解-基础语法快速入门

文章目录 1.DDL数据库相关操作1.1创建数据库1.2指定路径下创建数据库1.3添加额外信息创建with dbproperties1.4查看数据库 结合like模糊查询 2.查看某一个数据库的相关信息2.1.如何查看数据库信息&#xff0c;extended可选2.2修改数据库 3.Hive基本数据类型4.复杂数据类型5.类型…

深度解析:基于Vue 3与Element Plus的学校管理系统技术实现

一、项目架构分析 1.1 技术栈全景 核心框架&#xff1a;Vue 3 TypeScript UI组件库&#xff1a;Element Plus&#xff08;含图标动态注册&#xff09; 状态管理&#xff1a;Pinia&#xff08;用户状态持久化&#xff09; 路由方案&#xff1a;Vue Router&#xff08;动态路…

基于Django的个人博客系统的设计与实现

【Django】基于Django的个人博客系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统采用Python作为主要开发语言&#xff0c;结合Django框架构建后端逻辑&#xff0c;并运用J…

【架构面试】一、架构设计认知

涉及分布式锁、中间件、数据库、分布式缓存、系统高可用等多个技术领域&#xff0c;旨在考查候选人的技术深度、架构设计能力与解决实际问题的能力。 1. 以 Redis 是否可以作为分布式锁为例&#xff1a; 用 Redis 实现分布式锁会存在哪些问题&#xff1f; 死锁&#xff1a;如果…

DrawDB:超好用的,免费数据库设计工具

DrawDB&#xff1a;超好用的&#xff0c;免费数据库设计工具 引言 在软件开发过程中&#xff0c;数据库设计是一个至关重要的环节。 无论是关系型数据库还是非关系型数据库&#xff0c;良好的数据库设计都能显著提升系统的性能和可维护性。 然而&#xff0c;数据库设计往往…

如何将xps文件转换为txt文件?xps转为pdf,pdf转为txt,提取pdf表格并转为txt

文章目录 xps转txt方法一方法二 pdf转txt整页转txt提取pdf表格&#xff0c;并转为txt 总结另外参考XPS文件转换为TXT文件XPS文件转换为PDF文件PDF文件转换为TXT文件提取PDF表格并转为TXT示例代码&#xff08;部分&#xff09; 本文测试代码已上传&#xff0c;路径如下&#xff…

【Linux】线程、线程控制、地址空间布局

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、Linux线程1.1 线程的优缺点1.2 线程异常和用途1.3 线程等待1.3 线程终止1.4 线程分离1.5 线程ID和地址空间布局1.6 线程栈 1、…

c语言操作符(详细讲解)

目录 前言 一、算术操作符 一元操作符&#xff1a; 二元操作符&#xff1a; 二、赋值操作符 代码例子&#xff1a; 三、比较操作符 相等与不相等比较操作符&#xff1a; 大于和小于比较操作符&#xff1a; 大于等于和小于等于比较操作符&#xff1a; 四、逻辑操作符 逻辑与&…

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求&#xff1a; 将word中所有excel表格的格式进行统一化&#xff0c;修改其中的数字类型为“宋体&#xff0c; 五号&#xff0c;右对齐&#xff0c; 不加粗&#xff0c;不倾斜”&#xff0c;其中的中文为“宋体&#xff0c; 五号&#xff0c; 不加粗&#xff0c;不倾斜” 数…

第一届“启航杯”网络安全挑战赛WP

misc PvzHE 去这个文件夹 有一张图片 QHCTF{300cef31-68d9-4b72-b49d-a7802da481a5} QHCTF For Year 2025 攻防世界有一样的 080714212829302316092230 对应Q 以此类推 QHCTF{FUN} 请找出拍摄地所在位置 柳城 顺丰 forensics win01 这个软件 云沙盒分析一下 md5 ad4…