[2022 祥云杯] Reverse部分赛题复现

news/2024/3/29 14:11:09/文章来源:https://www.cnblogs.com/Here-is-SG/p/16849263.html

女娲补天:指星期天打了一天的V3,再不学re👶要被开了(确信

rocket

官方给了个Hint: rocket题目环境建议使用Ubuntu22.04,racket版本8.2

先配环境,直接按照hint去github上找.sh脚本安装的话运行程序会一直报permission denied的错而且解决不了(如果有大爹解决了请务必告诉我)。

只能就着一部分动调+静态嗯逆了。main函数里可以看见许多判断路径的操作,在最开始疯狂报错的动调中也可以发现他应该是在找文件路径,并且尝试附加参数什么的。并且就报错信息而言可以怀疑是racket语言编写的程序自带的一个函数。报错差不多就下面这样

并且,main函数里的动调可以发现变量file来自调用函数sub_5592080D70F0(),里面是/proc/self/exe,这是readlink()操作,代表从当前的程序读取。

随后用v17打开file,并不断通过ptrace操作进行跟踪。

通过代码分析可以发现其目的是执行255行的if ( !strcmp((const char *)ptrc + (unsigned int)v103[0], ".rackprog") )

ptrc是一个指针,v103是通过sys_read读的东西,根据前面file来自我们自己的程序,那么.rackprog也在我们程序里面吧大概。

尝试010 Editor搜一下,发现有两处

第一处感觉是报错信息啥的,但第二处很显然是个代码段的名字。找一下.rackprog代码段,会发现里面有一个巨大的data数组

把data给dump下来,尝试搜了下关键字rocket,然后会发现一堆诸如hex->string的明文操作,然后还有一步特别像运算的^([[:xdigit:]]{2})*$

然后大眼瞪了一万年只发现了把字符串转换成整型,以及把数据转换成hex数据再转换成字符串的操作,十分自闭。

随后直接去GitHub配了最新版的racket重新动调,然后execv()里有一步syscall,附加调试报错

然后生无可恋,自暴自弃想了下会不会就只有^([[:xdigit:]]{2})*$一步操作,猜测这玩意是做了一次乘2或者平方或者立方,用output的数据一个一个试了一下,然后发现

import gmpy2
import binasciienc = 7212272804013543391008421832457418223544765489764042171135982569211377620290274828526744558976950004052088838419495093523281490171119109149692343753662521483209758621522737222024221994157092624427343057143179489608942837157528031299236230089474932932551406181
# enf = gmpy2.iroot(enc, 2)[0].digits()
enf = gmpy2.iroot(enc, 3)[0].digits()
print(enf)# flag = 193207530030250486323082807418528242300453594901698934812368796575822264198418283118461
# print(hex(flag))enf = "6374667b746831735f69735f7265346c6c795f626561757431666c795f72316768743f7d"
hex = enf.encode('utf-8')
str = binascii.unhexlify(hex)flag = str.decode('utf-8')
print(flag)

十分懵逼地得到flag:ctf{th1s_is_re4lly_beaut1fly_r1ght?}

(真的是太美丽了

engtom

machine

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

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

相关文章

MySQL查询数据(多表查询)

1.内连接 语法:select 字段列表 from 表1 [as 别名1],表2 [as 别名2]....where 表1.字段 = 表2.字段 AND 其它查询条件 (1)查询student表和courses表的内容。SELECT * from student,courses; 此处的结果是student表的8行记录*courses表的4行记录,总共有32行记录(笛卡尔积…

【mysql】云服务器被攻击,数据库以及数据都被删除如何通过binlog日志恢复

前言: 小编买了一台阿里云服务器,然后通过docker 部署了mysql, 然后用了一段时间突然发现数据都没有了,然后就排查问题,发现是被攻击了,如下图 you must pay 0.26BTC,怒了,好多钱呢…

开放式运动耳机排行榜哪个好用,排行靠前的五款运动耳机分享

犹豫特殊原因没有了马拉松比赛,对此之前一起训练的小伙伴们自身的积极性也是日渐低迷,相应的现在训练都是我自己一个人,犹豫是一个人的训练,不管是在训练中还是在训练后都会感觉到枯燥孤单,为了解决这个困扰&#xff0…

金融期货和期权等品种权限

一、我国原油期货正式上市交易,由于该品种的特殊性,以及允许境外投资参与交易。 上市之后就规定监管机构就规定了该品种权限的开通方法如下,同时满足如下四个条件即可: 1、三年内有境内交易记录(即得先有商品期货账户…

国考省考申论:2次阅读法:1读感知材料类型和段落关系,2读根据问题词,原因词,影响词,对策词,关联词把握得分要点

国考省考申论:2次阅读法:1读感知材料类型和段落关系,2读根据问题词,原因词,影响词,对策词,关联词把握得分要点 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#x…

学习笔记:Nim 游戏

学习笔记:Nim 游戏 0 一些定义与概念 公平组合游戏(Impartial combinatorial game, ICG) 公平组合游戏满足:由两名玩家交替移动; 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关; 不能行动的玩家判负。Nim 游戏属于公平组合游戏。但常见的棋类大部分都不是…

【2022-11-01】前端Vue框架(六)

一、Vuex的使用 Vuex基本使用 # 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。# 使用步骤:1 在state中定义变量2 在组件中通过this.$store.dispatch(action…

虚拟存储器-11.1

虚拟存储器-11.1 1.虚拟存储器概述 1.1局部性原理 1.程序的局部性原理:程序在运行的时候局限在某个局部的地方。 2.虚拟存储器的工作基本情况 运行时在内存运行时不在内存需要时调入内存不需要调出内存 2.虚拟存储器实现的方法 2.1请求分页技术 2.1.1思想 分…

python标记删除如何实现?

python标记删除如何实现? 说明 1、主要解决循环引用的数据。因为引用大于0,不会回收。 2、标记删除是为了解决这个循环引用不能删除的问题。 3、对于删除操作后的每一个引用-1,此时num,num1的引用为0,将其放入死亡容器中&#…

VSCode下载安装与使用教程

目录1. 打开官网进行下载安装2. 下载3. 安装4. 使用4.1 extensions4.2 Python编译器4. 运行python代码的 3 种方法参考资料VSCode是一款免费开源的现代化轻量级代码编辑器,下面就简单的带大家一起来下载和安装VSCode。 1. 打开官网进行下载安装 官方下载链接&…

设计模式系列之MVC模式

这里写自定义目录标题1、设计模式概要最基本的设计模式使用设计模式的好处2、MVC模式MVC实例:模型 models.py视图views.py控制器 Controller.py3、优缺点总结1、设计模式概要 定义: 设计模式是由众多的软件开发人员经过长期的积累,不断试错改…

uniapp老项目添加自动化部署并配置多环境

我司其他项目都是通过jenkins打包部署的,只有uniapp项目要前端通过hbuilderx手动打包上传到git,为了方便操作,改造老项目! 创建一个新的uniapp项目 参考:https://uniapp.dcloud.net.cn/quickstart-cli.html 安装vue…

顺应国家趋势,争做爱国程序员

当今社会,为了不再使我国面临“缺芯”的情况下,先进计算技术逐渐成为我国的发展趋势。 那,何为先进计算? 百度百科的定义为:先进计算包括超级计算、大数据、人工智能、云计算等多种新兴IT信息技术,先进计…

仿iPhone开关按钮switch

前端开发checkbox 单选按钮做开关https://github.com/weatherstar/switchgithub下载 渲染事件方法 defaults { size : ‘default’ , checked : undefined , onText : ‘Y’ , offText : ‘N’ , onSwitchColor : ‘#64BD63’ , offSwitchColor : ‘#fff’ , onJackColor : ‘…

html实现飞机小游戏(源码)

文章目录1.思路讲解1.1 游戏设计1.2 主界面1.3 倒计时进入游戏1.4 游戏效果1.3 游戏结束2.实现源码2.1 游戏动态效果2.2 游戏主代码2.3 源码目录源码下载作者:xcLeigh 文章说明 html实现飞机大战源码,酷炫的界面效果,有四款飞机大战背景&…

2022高频经典前端面试题(es6+webpack+http网络+性能优化中篇,含答案)

ES6篇 1. ES6的新特性?(必考) 参考阮一峰的es6文档:https://es6.ruanyifeng.com/ let、const变量的解构赋值模板字符串(可以直接进行变量拼接)箭头函数… 展开运算符可以将数组或对象里面的值展开;还可以…

面试被问到如何排查JVM问题的,如何回答?

一、首先说可用工具 1、jmap可以查看当前Java进程的内存占用,把内存快照dump出来 用法:jmap [option] <pid> 常用命令jmap -heap pid 主要显示堆的内存使用情况,包括分代情况,每个代的总容量、已使用内存、可使用内存,如图: jmap -dump:live,format=b,file=xxx…

发第一篇SCI有哪些技巧?

正所谓万事开头难&#xff0c;每当第一次做某一件事情总是难以开展的。因为那时我们没有一定的方法和技巧去完成这些事。比如 SCI论文是无数科研人员认可的学术文献&#xff0c;但是想要在SCI期刊上发表论文是十分困难的&#xff0c;因为在论文创作上尚且不成熟&#xff0c;没有…

大学毕业1年,从监工转行软件测试,我拿到了人生第一份8k的offer

大家好&#xff0c;我是小静&#xff0c;是一名IT转行人&#xff0c;2015年毕业于某所XXXX大专&#xff0c;大学学的专业是土木工程&#xff0c;毕业也是不出意外的来到了工地&#xff0c;从事的是一份监工的工作&#xff0c;就是工地上带白帽子的&#xff0c;每个月拿着4000块…

js 之reduce 方法实现数组去重原理分布解析

需求 &#xff1a;当有一个数组对象 我们需要根据数组对象的某个属性进行去重 此时我们用reduce最合适不过 let alin [{id : 001 ,name : 小红},{id : 002 ,name : 小黄},{id : 001 ,name : 小红},]function arrRemoveRepet(arr) {let newArr []; // 去重后得到的新数组con…