isctf---re

news2024/12/29 11:03:13

crackme

 解压得到crackme.exe

 运行得到flag

babyRe

先猜e=65537的rsa

先用Z3强行求出p、q,算出常规rsa中的phi,然后套用公式求出m

exp

#babyre wp
from z3 import *
import libnum
from Crypto.Util.number import *
p,q,c=Ints('p q c')
S = Solver()
S.add(p+q==292884018782106151080211087047278002613718113661882871562870811030932129300110050822187903340426820507419488984883216665816506575312384940488196435920320779296487709207011656728480651848786849994095965852212548311864730225380390740637527033103610408592664948012814290769567441038868614508362013860087396409860)
S.add((p+1)*(q+1)==
21292789073160227295768319780997976991300923684414991432030077313041762314144710093780468352616448047534339208324518089727210764843655182515955359309813600286949887218916518346391288151954579692912105787780604137276300957046899460796651855983154616583709095921532639371311099659697834887064510351319531902433355833604752638757132129136704458119767279776712516825379722837005380965686817229771252693736534397063201880826010273930761767650438638395019411119979149337260776965247144705915951674697425506236801595477159432369862377378306461809669885764689526096087635635247658396780671976617716801660025870405374520076160
)
S.check()
d = S.model()
p = d[p].as_long()
q = d[q].as_long()
e=65537
c=5203005542361323780340103662023144468501161788183930759975924790394097999367062944602228590598053194005601497154183700604614648980958953643596732510635460233363517206803267054976506058495592964781868943617992245808463957957161100800155936109928340808755112091651619258385206684038063600864669934451439637410568700470057362554045334836098013308228518175901113235436257998397401389511926288739759268080251377782356779624616546966237213737535252748926042086203600860251557074440685879354169866206490962331203234019516485700964227924668452181975961352914304357731769081382406940750260817547299552705287482926593175925396
phi = (p-1)*(q-1)
n=p*q
m = pow(c,inverse(e,phi),n)
flags=long_to_bytes(m)
flag=flags.decode('utf-8','ignore')
print(flag)

mfx_re

脱壳+移一位异或

使用upx -d命令进行脱壳

可知程序对输入字符串的每一位的ASCII码值都减了1,逆向解密只需加1即可 

def add_value_to_string(input_string):
    result = ''
    for char in input_string:
        new_char = chr(ord(char) + 1)
        result += new_char
    return result


input_str = "HRBSEz22255e2`,6`0`,3`08,722e,7e`3b5d4ba60|"
result_str = add_value_to_string(input_str)
print(result_str)

ISCTF{33366f3a-7a1a-4a19-833f-8fa4c6e5cb71}

eazyre

hint1:正确flag字符串ISCTF打头,其余均为错解。
hint2:正确明文的md5为  d26628cceedb1f8bdb3535913c82d959

非预期了 hint2给了md5

somd5一把梭

正确应该是找到加密函数

分析函数,先对字符串异或17,然后如果字符发ASCII码值等于66或88,用155减去该字符,最后对字符串进行逆序。

exp

enc = ']P_ISRF^PCY[I_YWERYC'
ttmp = ''
flag = ''
ttmp = reversed(enc)
for i in ttmp:
    if ord(i) == (155 - 66) or ord(i) == (155 - 88):
        flag += chr((155 - ord(i)) ^ 17)
    else:
        flag += chr(ord(i) ^ 17)
print(flag)

flowerrsa

e = 465

n = 3162244531

from Crypto.Util.number import *
import gmpy2

n = 3162244531
c = [0x753C2EC5, 0x8D90C736, 0x81282CB0, 0x7EECC470, 0x944E15D3,0x2C7AC726, 0x717E8070, 0x30CBE439, 0x0B1D95A9C, 0x6DB667BB,0x1240463C, 0x77CBFE64, 0x11D8BE59]
e = 465

p = 56099
q = 56369


d = gmpy2.invert(e,(p-1)*(q-1))
res = [long_to_bytes(pow(i,d,n)).decode() for i in c]

print("".join(res))

easy_z3

print("Please input flag:")
flag = input()
if len(flag)!=42:
	print("Check your length!")
	exit()

l=[]
for i in range(6):
	s=""
	for j in flag[i*7:i*7+7]:
		s+=hex(ord(j))[2:]
	l.append(int(s,16))
if (
(593*l[5] + 997*l[0] + 811*l[1] + 258*l[2] + 829*l[3] + 532*l[4])== 0x54eb02012bed42c08 and \
(605*l[4] + 686*l[5] + 328*l[0] + 602*l[1] + 695*l[2] + 576*l[3])== 0x4f039a9f601affc3a and \
(373*l[3] + 512*l[4] + 449*l[5] + 756*l[0] + 448*l[1] + 580*l[2])== 0x442b62c4ad653e7d9 and \
(560*l[2] + 635*l[3] + 422*l[4] + 971*l[5] + 855*l[0] + 597*l[1])== 0x588aabb6a4cb26838 and \
(717*l[1] + 507*l[2] + 388*l[3] + 925*l[4] + 324*l[5] + 524*l[0])== 0x48f8e42ac70c9af91 and \
(312*l[0] + 368*l[1] + 884*l[2] + 518*l[3] + 495*l[4] + 414*l[5])== 0x4656c19578a6b1170):
	print("Good job!")
else:
	print("Wrong\nTry again!!!")
	exit()

 exp

from z3 import*
from Crypto.Util.number import *
# print("Please input flag:")
# flag = input()
# if len(flag)!=42:
# 	print("Check your length!")
# 	exit()

# l=[]
# for i in range(6):
# 	s=""
# 	for j in flag[i*7:i*7+7]:
# 		s+=hex(ord(j))[2:]
# 	l.append(int(s,16))
# if (

x1, x2, x3, x4, x5, x6 = Ints("x1 x2 x3 x4 x5 x6")
x = [x1,x2,x3,x4,x5,x6]
s = Solver()
s.add(
(593*x[5] + 997*x[0] + 811*x[1] + 258*x[2] + 829*x[3] + 532*x[4])== 0x54eb02012bed42c08 ,
(605*x[4] + 686*x[5] + 328*x[0] + 602*x[1] + 695*x[2] + 576*x[3])== 0x4f039a9f601affc3a ,
(373*x[3] + 512*x[4] + 449*x[5] + 756*x[0] + 448*x[1] + 580*x[2])== 0x442b62c4ad653e7d9 ,
(560*x[2] + 635*x[3] + 422*x[4] + 971*x[5] + 855*x[0] + 597*x[1])== 0x588aabb6a4cb26838 ,
(717*x[1] + 507*x[2] + 388*x[3] + 925*x[4] + 324*x[5] + 524*x[0])== 0x48f8e42ac70c9af91 ,
(312*x[0] + 368*x[1] + 884*x[2] + 518*x[3] + 495*x[4] + 414*x[5])== 0x4656c19578a6b1170
)
s.check()
print(s.model())
# ):
# 	print("Good job!")
# else:
# 	print("Wrong\nTry again!!!")
# 	exit()

x6= 26860403902456189
x4= 32765855640286324
x5= 28554726411354222
x3= 31015537033047360
x2= 13615593641303915
x1 = 20639221941697358
x = [x1, x2, x3, x4, x5, x6]
for i in range(6):
	print(long_to_bytes(x[i]).decode(),end="")

z3_revenge

from z3 import *
s = Solver()  #创建约束求解器
c = [Int('v%d'%i)for i in range(43)]  #添加约束条件
s.add(c[0] + 394 - 740 * c[1] == -60953)
s.add(c[1] + 878 - (c[2] + 614) == 280)
s.add(195 * c[2] + 457 - c[3] == 13438)
s.add(c[3] - 330 - (186 - c[4]) == -362)
s.add(840 * c[4] - 977 * c[5] == -61371)
s.add(729 * c[5] - (197 - c[6]) == 89567)
s.add(c[6] - 899 + 946 - c[7] == 44)
s.add(c[7] - 593 - 373 * c[8] == -18770)
s.add(842 * c[8] + 261 * c[9] == 55613)
s.add(787 * c[9] - (c[10] + 204) == 43029)
s.add(664 * c[10] + 160 - c[11] == 34635)
s.add(c[11] - 885 + 366 * c[12] == 35768)
s.add(659 * c[12] + 892 - c[13] == 66691)
s.add(500 * c[13] - (c[14] + 535) == 49920)
s.add(c[14] - 983 + 194 - c[15] == -844)
s.add(c[15] - 871 + 545 - c[16] == -326)
s.add(762 * c[16] - 443 * c[17] == 51835)
s.add(846 * c[17] - (c[18] + 964) == 45464)
s.add(c[18] - 363 + 218 * c[19] == 9549)
s.add(c[19] - 477 - 170 * c[20] == -9272)
s.add(c[20] - 177 - (351 - c[21]) == -379)
s.add(c[22] + 541 + 492 * c[21] == 48314)
s.add(c[22] - 952 - (454 - c[23]) == -1306)
s.add(c[23] - 731 - (c[24] + 890) == -1615)
s.add(c[24] - 941 - (c[25] + 380) == -1332)
s.add(c[25] - 328 + c[26] + 124 == -98)
s.add(c[26] + 695 + c[27] + 186 == 980)
s.add(c[27] - 412 + 632 * c[28] == 62205)
s.add(c[28] + 820 + c[29] + 257 == 1221)
s.add(c[29] - 155 + c[30] + 673 == 613)
s.add(786 * c[30] - (773 - c[31]) == 38625)
s.add(c[31] + 929 - (956 - c[32]) == 171)
s.add(c[32] + 913 + 311 - c[33] == 1270)
s.add(c[33] + 113 - 705 * c[34] == -40018)
s.add(c[35] + 782 + 901 * c[34] == 52237)
s.add(c[35] - 716 + 255 - c[36] == -411)
s.add(c[36] + 307 + c[37] + 874 == 1329)
s.add(c[37] + 355 - (201 - c[38]) == 308)
s.add(c[38] + 934 + 531 - c[39] == 1465)
s.add(c[39] - 801 - (c[40] + 413) == -1209)
s.add(c[40] - 690 + 558 - c[41] == -135)
s.add(c[41] - 559 + c[42] + 953 == 571)
s.add(c[42] + 141 - 654 * c[0] == -47476)
s.check()  #检测是否有解
result = s.model()  #输出
flag = ''
for i in range(43):
    flag += chr(result[c[i]].as_long())
print(flag)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们&#xff0c;坚持固然不容易&#xff0c;但我相信大家已经学到了不少&#xff0c;那么我们开始马不停蹄的进入前端的框架吧&#xff0c;下面讲的是Vue2&#xff0c;大家继续加油鸭&#xff01;&#xff01;&#xff01;&#xff01; Vue2 Vu…

遗传算法优化最大化效应的某些需求点可不配送的vrptw问题

标题&#xff1a;遗传算法优化最大化效应的某些需求点可不配送的vrptw问题 摘要&#xff1a; 在可不配送的车辆路径配送问题&#xff08;VRPTW&#xff09;中&#xff0c;我们面临着优化路径规划以最大化效用的挑战。本文提出了一种基于遗传算法的方法&#xff0c;旨在解决具…

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来&#xff0c;来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数&#xff0c;把网卡名作为参数&#xff0c;函数返回网卡的IP 在获取某个网卡IP时&#xff0c;考虑网…

Redis面试(三)

1.Redis报内存不足怎么处理 Redis内存不足的集中处理方式&#xff1a; 修改配置文件redis.cof的maxmemory参数&#xff0c;增加Redis的可用内存通过命令修改set maxmemory动态设置内存上限修改内存淘汰策略&#xff0c;及时释放内存使用Redis集群&#xff0c;及时进行扩容 2…

基于springboot的美发管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

让Unity迭代器性能提升5倍

最近在研究Unity il2cpp的代码生成和编译优化&#xff0c;结合之前遇到过的一个优化案例&#xff0c;给大家讲讲在Unity中迭代器相关代码生成的底层原理&#xff0c;以及在写代码过程中需要注意的一些特殊情况。 案例 首先我们来看一个非常简单的案例&#xff0c;代码如下&am…

3338 蓝桥杯 wyz的数组IV 简单

3338 蓝桥杯 wyz的数组IV 简单 //C风格解法1&#xff0c;通过率50% #include<bits/stdc.h>int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n; std::cin >> n;int ans 0;std::vector<int>a(n);for(auto &am…

Docker本地部署APITable结合内网穿透实现公网访问

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

【C语言】socket编程接收问题

一、recv()函数接收到的返回值为0表示对端已经关闭 在TCP套接字编程中&#xff0c;通过recv()函数接收到的返回值为0通常表示对端已经关闭了套接字的发送部分。这是因为TCP是一个基于连接的协议&#xff0c;其中有定义明确的连接建立和终止流程&#xff1b;当对端调用close()或…

C语言指针进阶(1)(超详细)

前言&#xff1a; 指针其实就是地址&#xff0c;而凡是存储在内存中的值都会有属于自己的地址&#xff0c;指针指向地址&#xff0c;这样我们就能通过指针间接操作变量。我们在指针初阶中介绍了指针的基本概念&#xff1a;如指针大小、野指针问题、指针间的关系运算等&#xff…

Hugging Face创始人分享:企业如何在ChatGPT浪潮下实现战略布局

Hugging Face创始人兼首席执行官 Clem Delangue在IBM一年一度的 THINK大会中研讨了当前人工智能发展趋势&#xff0c;特别是ChatGPT模型以及其对行业的影响。他的演讲还涉及到一个关键的议题&#xff0c;在ChatGPT这样的通用模型出现后&#xff0c;企业如何在人工智能领域找到自…

自定义vue通用左侧菜单组件(未完善版本)

使用到的技术: vue3、pinia、view-ui-plus 实现的功能: 传入一个菜单数组数据,自动生成一个左侧菜单栏。菜单栏可以添加、删除、展开、重命名,拖动插入位置等。 效果预览: 代码: c-menu-wrap.vue <template><div class="main-container">&l…

【嵌入式学习】C++QT-Day3-C++基础

笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函…

当包容结构体遇见灵活的内存管理

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…

课时7:shell基础_shell简介

1.3.1 shell简介 学习目标 这一节&#xff0c;我们从 运维、shell语言、小结 三个方面来学习。 运维 简介 运维是什么&#xff1f;所谓的运维&#xff0c;其实就是公司的内部项目当中的一个技术岗位而已&#xff0c;它主要做的是项目的维护性工作。它所涉及的内容范围非常…

方法、数组

方法 是语句的集合&#xff0c;在一起执行一个功能 它是解决一类问题的步骤的有序集合 包含于类或对象中 在程序中创建&#xff0c;在其他地方被引用 设计方法的原则&#xff1a;方法的本意是功能块&#xff0c;就是实现某一个功能的语句块的集合。设计时&#xff0c;最好保持…

基于go mod模式创建项目最佳实践

希望能带给你成功的喜悦&#xff01; 除go get、vendor这两种方式外&#xff0c;Go版本在1.11之后推出了go module模式来管理依赖&#xff0c;使用go mod时下载的依赖文件在$GOPATH/pkg/mod/下。本文以两种办法介绍如何创建go mod项目。 目录 goland开启玩法 本地手动创建项目…

###C语言程序设计-----C语言学习(6)#

前言&#xff1a;感谢老铁的浏览&#xff0c;希望老铁可以一键三连加个关注&#xff0c;您的支持和鼓励是我前进的动力&#xff0c;后续会分享更多学习编程的内容。 一. 主干知识的学习 1. while语句 除了for语句以外&#xff0c;while语句也用于实现循环&#xff0c;而且它…

shell脚本自动化备份网络设备配置教程

由于局域网内存在多台网络设备&#xff0c;如防火墙、路由器、交换机等&#xff0c;数量众多&#xff0c;且品牌不同&#xff0c;手工备份配置需要相当长的时间&#xff0c;现需要实现自动化导出备份配置。 经查询&#xff0c;该局域网内存在华为及阿尔卡特两种品牌&#xff0…