1.砍树

下载题目得到一个apk文件,jadx打开,查看Android.Manifest.xml



查看MainActivity



发现使用了一个I0o0I处理了输入和Syclover,猜测应该是对text处理后与Syclover对比,当result赋值为1就成功了。故查看I0o0I



发现I0o0I再so文件中,故查看libezreeeee.so文件

IDA打开,查找I0o0I



生成伪代码并修改一些可以分辨的函数

在 函数中

text[i] ^= syclover[i % 7];

syc = Sycloverforerver实际上只被用到了前6个字符

解题脚本

点击查看代码
#include <stdio.h>
#include <string.h> int main(void) {
unsigned char text[40];
unsigned char syc[20] = "Sycloverfover";
unsigned char dest[36] = {
0x00, 0x20, 0x20, 0x17, 0x1B, 0x36, 0x0E, 0x36,
0x26, 0x17, 0x04, 0x2A, 0x29, 0x07, 0x26, 0x15,
0x52, 0x33, 0x2D, 0x0F, 0x3A, 0x27, 0x11, 0x06,
0x33, 0x07, 0x46, 0x17, 0x3D, 0x0A, 0x3C, 0x38,
0x2E, 0x22, 0x18
}; for (int i = 0; i < 35; ++i) {
text[i] = dest[i] ^ syc[i % 7];
} printf("Recovered text: ");
for (int i = 0; i < 35; ++i) {
printf("%c", text[i]);
}
printf("\n"); return 0;
}

2.点击就送的逆向题

这道题给了一个.s文件

解决方案有两个:

1.利用gcc编译成可执行文件,然后反编译生成伪代码

2.直接分析汇编(我不会。。。)

1.利用gcc编译成可执行文件

linux执行gcc -o 1.s 1

IDA打开,分析并编写,注意一定要在字符串末尾加上\0结束符!!!

点击查看代码
#include <stdio.h>
int main(void)
{
char e1[32] = "Z`J[X^LMNO`PPJPVQRSIUTJ]IMNOZKMM";
char result[33];
for (int i = 0; i <= 31; i++)
{
result[i] = e1[i] - 7;
}
result[33] = "\0";
printf("%s",result);
return 0;
}

3.幸运数字

解题脚本:

点击查看代码
# 定义 datas 数组
datas = [
13, 7, 29, 37, 29, 110, 48, 57, 44,
63, 42, 43, 50, 63, 42, 55, 110, 48,
48, 48, 48, 45, 1, 7, 49, 43, 1,
57, 31, 59, 45, 45, 27, 58, 1, 12,
ord('o'), ord('9'), ord('6'), ord('*'), ord('#')
] # 计算 result 函数
def result(k):
if k:
return result(k - 1) + k
else:
return 0 # 生成 flag 的函数
def generate_flag(input_value):
flag = ""
v5 = result(input_value) % 211 # 计算 v5
for v4 in datas:
flag += chr(v4 ^ v5) # 生成字符
return flag for input_value in range(1000): # 遍历所有可能的输入
flag = generate_flag(input_value)
# 检查 flag 是否符合特定格式,例如 SYC{}
if flag.startswith("SYC{") and flag.endswith("}"):
print(f"找到符合条件的输入值: {input_value}, 生成的 flag: {flag}")
break

4.小黄鸭

题目给了一个exe文件,IDA打开,发现是Pyinstall打包的软件

使用PyInstaller Extractor:https://sourceforge.net/projects/pyinstallerextractor/files/latest/download

python pyinstxtractor.py 1111.exe反编译



发现是Python3.7

通过查看其他pyc文件知道Magic Number 是 42 0D



发现一直报错,不明原因换一个软件:pyinstxtractor(找到问题了,一定要从github下载!!!)

https://www.cnblogs.com/pcat/p/8990482.html

使用在线工具进行pyc反编译

https://tool.lu/pyc/

解题脚本:

点击查看代码
d='~h|p4gs`gJdN`thPwR`jDn`te1w`2|RNH'
flag=''
for i in range(len(d)):
if d[i].isalpha():
c=chr(ord(d[i])-2)
flag+=chr(ord(c) + 13 - 26 if ord(c) + 13 > (90 if c <= 'Z' else 122) else ord(c) + 13) else:
flag+=chr(ord(d[i])-1)
print(flag[::-1])

得到`SYC{1_h0pe_yOu_ChAse_YoUr_dr3a{s}`
但是题目中还给了提示:![image](https://img2024.cnblogs.com/blog/2306929/202410/2306929-20241012223056427-689438919.png)
所以倒数第二个字母是m

参考:

https://github.com/MrWQ/reverse_pyinstaller

https://blog.ctftools.com/2022/10/newpost-50/

【极客大挑战2023】RE方向 WriteUp的更多相关文章

  1. 三叶草极客大挑战2020 部分题目Writeup

    三叶草极客大挑战2020 部分题目Writeup Web Welcome 打开后状态码405,555555,然后看了一下报头存在请求错误,换成POST请求后,查看到源码 <?php error_ ...

  2. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  3. BUUOJ [极客大挑战 2019]Secret File

    [极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...

  4. [原题复现][极客大挑战 2019]BuyFlag

    简介  原题复现:[极客大挑战 2019]BuyFlag  考察知识点:php函数特性(is_numeric().strcmp函数())  线上平台:https://buuoj.cn(北京联合大学公开 ...

  5. 极客大挑战2019 http

    极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...

  6. 2020极客大挑战Web题

    前言 wp是以前写的,整理一下发上来. 不是很全. 2020 极客大挑战 WEB 1.sha1碰撞 题目 图片: 思路 题目说,换一种请求方式.于是换成post.得到一给含有代码的图片 图片: 分析该 ...

  7. BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)

    BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...

  8. SYC极客大挑战部分题目writeup

    Welcome 复制黏贴flag即可 我相信你正在与我相遇的路上马不停蹄 关注微信工作号回复"我要flag"即可获得flag 代号为geek的行动第一幕:毒雾初现 发现flag为摩 ...

  9. 第九届极客大挑战 部分WP

    CODE 和0xpoker分0day 百度 取石子游戏. https://blog.csdn.net/qq_33765907/article/details/51174524 已经说得很详细了,慢慢来 ...

  10. web刷题记录 极客大挑战2019Knife upload buy a flag

    极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...

随机推荐

  1. 第1讲、#PyTorch教学环境搭建与Tensor基础操作详解

    引言 PyTorch是当前深度学习领域最流行的框架之一,因其动态计算图和直观的API而备受开发者青睐.本文将从零开始介绍PyTorch的环境搭建与基础操作,适合各种平台的用户和深度学习初学者. 1. ...

  2. 浅析Java8中default关键字

    摘要:介绍Java8新增关键字default,它用于在接口中标记方法为默认方法和编写实现逻辑,方便通过新增方法重构接口,而无需修改所有实现类,目的在于兼容接口已有实现类. 综述   default关键 ...

  3. Kubernets初窥门径 (NameSpace、Pod、Label、Deployment、Service)

    1.Namespace Namespace是Kubernetes系统中一种非常重要的资源,它的主要作用是用来实现多套系统的资源隔离或者多租户的资源隔离. 默认情况下,Kubernetes集群中的所有P ...

  4. Django中的文件操作

    一.静态文件的加载 1.使用步骤 ①.在工程目录下创建static目录,创建css/js/images等目录,并添加相关资源 ②.在settings.py中配置STATICFILES_DIRS STA ...

  5. AWS S3文件存储服务器搭建(新)

    之前写过一版  AWS S3文件存储服务器搭建  基本操作一样,只是在搭建 CloudFront 有点不同. 一:创建s3桶 AWS S3文件存储服务器搭建 二:使用自己的链接访问 1:申请Cloud ...

  6. Java学习篇(二)—— C++和Java的区别之程序内存分布

    上一篇介绍了C++和Java编译的区别和Java独有的网络编程,线程管理.这一篇主要介绍一下两者在程序运行时的内存空间. 内存分布 项目 C++ 程序 Java 程序(使用 JVM) 编译结果 直接生 ...

  7. Xamarin.Andorid 调用相机拍照

    https://www.jianshu.com/p/29b349ff7f1a 第一步:XML布局文件 <?xml version="1.0" encoding="u ...

  8. windows使用chrome调试ios webView

    包含safari和App如果安装失败,直接删除C:\Users\Administrator\scoop 重新安装即可 安装scoop windows下的安装源搜索工具,有点类似centos下的yum. ...

  9. spring 中 mapper 中 resultMap resultType

    简介 一般 resultMap 适用于自定义类型 resultType 适用于java自带的类型

  10. C++线程池 基于Cpp98的实现 学习2 未完待续

    简介 用到了太多的C++11的知识点,所以,暂时学点别的再搞这个. C++11 特殊函数的认识 delete defalut在C++11的作用可以参考这篇文章 https://blog.csdn.ne ...