【NewStarCTF 2023】题解week1

news/发布时间2024/8/24 16:51:11

easy_RE

先exeinfo

没有壳,直接上ida

看到有关键信息,但没有显示完,按f5反编译一下

拼接一下输入,注意字符串的部分字母由近似数字代替,提交

KE

运行一下,看到是KE,想着可能是壳的意思?exeinfo看一下

upx壳,尝试upx脱壳

呃呃 权限好像不对 尝试了一下用管理员权限打开

要记住先输入红框中的两行指令才可以打开目标文件夹。

打开之后可以看到成功脱壳了。

直接ida f5看看

程序逻辑也很清晰了,第一个红框输入字符并且通过++Str1[i]把字符的ascii值往后推一个,第二个红框就是加密之后与字符串enc进行比较

enc:

写脚本吧

a="gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~"
for i in a:k=ord(i)-1print(chr(k),end='')

出flag

flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}

segment

elf,那放到kali里面看看

额,没啥信息,放ida里面吧,因为题目的信息也是这个

ok,啥也没有,按照提示shift f7打开段窗口

关键信息出来了,但是要注意的是flag后面的和name后面的__要换成{}

flag{You_ar3_g0od_at_f1nding_ELF_segments_name}

ELF

感觉没啥特殊的,扔kali里面看看

ida里面看看

可以看到,我们输入的字符串先经过了两重加密,然后和Vlx…进行比较。

所以你想思路就是Vlx…先解base64,再解上面那个encode。

本来第一步解base64我用的就是在线网站


然后换了一个网站,发现还没什么,直接就进行下一步

上面那个encode的逻辑就是先异或0x20,再减去16

那直接写就是了

flag{D04ou7nowwha7ELF1s?}

提交,不对。

后面我就觉得应该是上面有些不是标准字符,但是我错误的把他直接用来解密,就研究怎么直接在python里面,利用base64库,不用显示转义字符地得到字符串。直接告诉gpt需求,就写了

import base64# 密文字符串
encrypted_string = "VlxRV2t0II8kX2WPJ15fZ49nWFEnj3V8do8hYy9t"
# Base64 替代字符集
altchars = b'@~'# Base64 解码并使用替代字符集解析非标准字符
decoded_bytes = base64.b64decode(encrypted_string, altchars=altchars)# 使用异或解密
decrypted_bytes = bytes([(c - 16) ^ 0x20 for c in decoded_bytes])# 得到最初的字符串
original_string = decrypted_bytes.decode('utf-8')print(original_string)

有了

flag{D0_4ou_7now_wha7_ELF_1s?}

Endian

endian是小端序的意思

详细的自行百度
用exein看一看

没啥特殊的,直接ida

大概就是这样
很明显是我们输入的内容被覆给v5,然后v5和array这个数组的各个成员进行0x12345678异或
写个脚本

a=[0x75553A1E,0x7B583A03,0x4D58220C,0x7B50383D,0x736B3819]
b=[]
for i in a:b.append(hex(i^0x12345678))
print(b)


大概就出了这些东西,简单看看第一个0x67616c66
根据小端序,先看66,66在ascii里面

再是6c

所以所说的小端序就是这里,flag分为5组,每组的字符按照小端序顺序存储,即前面的字符的asc码存在后面,写个脚本

a=[0x75553A1E,0x7B583A03,0x4D58220C,0x7B50383D,0x736B3819]
b=[]
for i in a:b.append(hex(i^0x12345678))
print(b)for m in b:hex_str = m  # 假设您的16进制数为0x12345678for i in range(len(hex_str)-2, 1, -2):  # 从后往前每次取2个字节hex_byte = hex_str[i:i+2]  # 取出2个字节的16进制数ascii_code = int(hex_byte, 16)  # 转换为整数print(chr(ascii_code), end="")  # 打印对应的ASCII码字符

flag{llittl_Endian_a
不知道为什么缺了个}

AndroXor

这是一道安卓题
愿意的话就自己弄个模拟器,或者安卓手机上面试试,我图个省事,就算了
安卓apk用jadx打开
通过搜索特定字符串(一般题目都会出wrong或者win或者success之类的字样,搜搜看)

框内的是比较可能,双击跟进。

关键信息全都出现了,这个XOR方法有两个参数 str和str2
正向逻辑是我们输入的内容作为obj和happyx3进行异或,然后和本来的carr的内容比较,不对就报错
所以逆向也很简单了,carr和happyx3异或

c = [14,ord('\r'), 17, 23, 2, ord('K'), ord('I'), ord('7'), ord(' '), 30, 20, ord('I'), ord('\n'), 2, ord('\f'), ord('>'), ord('('), ord('@'), 11, ord('\''), ord('K'), ord('Y'), 25, ord('A'), ord('\r')]
key = b'happyx3'xor(bytes(c),key)

#flag{3z_And0r1d_X0r_x1x1}

EzPE


这题是比较难的一道题,从这里可以看出这个PE文件是有问题的,用010editor打开(这是一个二进制文件查看编辑器)

可以看到有让我们修复这个PE文件的信息,这涉及了PE文件结构体的各种知识,是挺复杂的东西,看了这题之后大家可以自行找点资料学学,结合本题,对PE文件有初步了解。
PE文件的DOS头里面有两个比较关键的点,一个是开头的MZ(PE文件作者的名字),另一个是
这个地方的下一个NT头的偏移。
可以看到这道题把MZ变成了WZ,先改回来
再是那个指向下个NT头的偏移
NT头有个比较重要的识别标志,即PE签名

可以看到这个PE签名在80h的位置,而本来的NT头偏移指向90h,要改一下


可以看到现在

已经成功跑起来了,现在涉及程序逆向

没啥问题,直接ida

流程也很明显了,即我们输入的内容和自己再和序号和下一个异或,再和程序中本来的data进行比较

data如上,比较长一个
我就偷个懒了,data比较长直接用别人的脚本了

enc = bytes.fromhex('0A0C041F266C432D3C0C544C24251106053A7C51381A030D01361F122604685D3F2D372A7D')
flag = 'f'
for i in range(len(enc)):for k in range(0x20,0x7f):if ord(flag[i])^k^i == enc[i]:flag += chr(k)break 
#flag{Y0u_kn0w_what_1s_PE_File_F0rmat}

lazy_activtiy

也是一个apk文件
不过这题没什么关键信息就只能一个个看

定位到这里,红框内容明显就是一个判断条件,这里是点击次数超过一万就成功。

这里的edittext就是flag,这里是一个用户自定义的内容,根据上面字样layout_2

也找到了

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

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

相关文章

RocketMQ为什么要保证订阅关系一致

这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:保证订阅关系一致。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 1 订阅关系演示 首先我们展示正确的订…

ServletContext接口

第一个:ServletContext接口一个web应用创建一个,实现数据共享步骤1.需要在web.xml中配置,写在<Web-app></web-app>中间 <param-name></param-name>写入变量名,<param-value></param-value>写入值 <context-param><param-name…

组合,反射,魔术方法

组合,反射,魔术方法组合 反射 魔术方法组合 什么是组合?组合就是,一个对象拥有一个属性,该属性的值是另外一个对象."""什么场景下使用继承? 什么场景下使用组合?""" 继承一般情况用在:什么是什么的情况 is 组合一般用在:什么有什么的情…

阿里云容器服务 ACK 产品技术动态(202308)

阿里云容器服务 ACK 产品技术动态(202308)

接口自动化--postman(5)接口关联

关联:把多个接口联系起来的技术,就是关联。本质上就是关联数据,例如可以把上一个接口返回的部分响应数据,当作下一个接口的入参数据,关联的作用:实际工作中,每个接口都是拼图一样的碎片,多个接口组合起来时,才能形成真正的功能,这个时候, 我们必须按照这些接口的数据…

总结selenium 中 js 更改隐藏属性

第一种 多个元素被隐藏时 通过js修改 对比照片 这个是没隐藏的 对比照片 这个是隐藏的 driver = webdriver.Chrome()# urlurl=r"http://127.0.0.1:5000/"driver.get(url)print("已打开网页")# 执行js脚本,将元素的display属性设置为block,使其可见;注意…

winform -Label控件

1、设置标签文本 label1.Text ="用一生下载你"; 2、显示/隐藏控件label1.Visible =true; //来设置是否隐藏控件

Topaz Gigapixel AI:智能照片放大专家 mac+win版

Topaz Gigapixel AI是一款由Topaz Labs公司开发的智能照片放大软件,它通过先进的人工智能技术,将低分辨率图片转化为高分辨率、清晰度和细节丰富的图像。 →→↓↓载Topaz Gigapixel AI mac/win版 该软件的操作流程非常简单,主要包括导入图片、选择放大倍数、调整参数、开始…

在线问诊 Python、FastAPI、Neo4j — 问题咨询

目录查出节点拼接节点属性测试结果问答演示 通过节点关系,找出对应的节点,获取节点属性值,并拼接成想要的结果。 接上节生成的CQL # 输入 question_class = {args: {看东西有时候清楚有时候不清楚: [symptom]}, question_types: [symptom_disease]} # 输出 [{question_type:…

万映佟的技术之路

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/23rjjsjc这个作业的目标 1. 创立自己的博客,完善账号信息 2.发表随笔,介绍自己以及表达对课程的期望姓名-学号万映佟-2021339930016我一直对电气工程和自动化领域充满浓厚的兴趣。除了学业,我还热爱踢足球与玩英雄…

Django RestFramework、Celery及Channels

Django REST Framework 什么是RESTful API RESTful API是一种基于HTTP协议的接口设计风格,它使用统一的接口和资源的概念来定义和操作网络应用程序的功能和数据。RESTful API使用HTTP动词(GET、POST、PUT、DELETE等)来表示操作类型,并使用URL来标识资源。 传统风格的HTTP接…

Linux Mint Debian 版本 6 “Faye” 来了!

导读 去年,Linux Mint Debian Editon(LMDE)发布了一个重要的版本 LMDE 5,并带来了一些比较不错的改进。今年,我们迎来了 LMDE 6 版本,代号为 “Faye”。它采用了与以往版本相似的命名方式。 让我们看看这一新版本有什么引人注目的地方! Linux Mint Debian Edition 6 “F…

什么时候会用到设计模式与授课方式

设计模式的重要性内容和授课方式 设计模式是站在一个项目的结构怎么更合理来思考的,而不是站在功能怎么实现来思考的

ublock origin自定义规则--以屏蔽B站广告为例

目前比较知名的广告屏蔽插件有ublock origin(ubo), adguard等, 其中adguard跨平台性更好, 浏览器插件, 安卓,PC客户端, 我用的是ublock origin, 据说资源占用小,实际使用下来都差不多,不过ubo添加自定义规则方便很多,推荐~ 在不进行任何设置的情况下,ubo和adguard等主流的…

PDManer v4.6.3 安装文件

PDManer v4.6.3 安装文件 最新版本的 PDManer v4.6.3 的安装文件可以从如下百度网盘地址中下载: 链接:https://pan.baidu.com/s/1botl9a9ErbqbprjLIIJE4w 提取码:luna

数据采集与融合技术实践作业2

作业①: 1) gitee链接: https://gitee.com/zxbaixuexi/scrapy_homework/tree/master/作业2/1 要求:在中国气象网(http://www.weather.com.cn)给定城市集的 7 日天气预报,并保存在数据库。 代码: import requests import sqlite3 from bs4 import BeautifulSoup #创建DB类…
推荐文章