商丘师范学院第四届网络安全及信息对抗大赛SQCTF(校外赛)WP
题目出的挺好的,有梯度而且各类知识点都有,最后也是做了42道,虽然只有193名,大佬特别多,但是感觉自己还蛮厉害的(
Web
1、RceMe
shellcode
1 | /?com=nl%20/* |
2、ezGame
发现一个obj

因此用obj.score改分数

玩输了之后获得flag

3、Ping
用管道符发现能执行命令

用1同样的方法获得flag

4、商师一日游
第一关:源代码

第二关:Cookie

第三关:请求头

第四关:robots.txt

第五关:
shellcode:?hhh=php%0Aflag
第六关:去掉disabled

第七关:shell
蚁剑连接

这里记得把杀毒软件关掉
获得最后一块

5、小小查询系统
sqlmap秒了
1 | sqlmap -u http://challenge.qsnctf.com:30561/?id=1 -a |

6、大大大黑塔
bv号
1 | http://challenge.qsnctf.com:30641/?SQNU=BV1tXckehEd30641 |
随后反序列化
1 |
|
发送

6、Input a number
intval($num,0)函数是多进制判断,尝试了一下用八进制可以

7、Ez_calculate
ai写的
1 | import requests |


8、My Blog
点github获得账号密码

dirsearch获得login.php

输入账号密码获得flag

9、baby rce

10、eeaassyy
直接开开发人员工具

11、逃
1 | /?payload=O:4:"test":2:{s:4:"user";s:4:"test";s:4:"pswd";s:8:"escaping";} |

12、
flask-unsign

随后输入cookie:session=

导航到/admin获得flag

Reverse
1、遇事不决,可问春风
找mainactivity,然后问ai获得答案
确定flag长度:
v9被设置为15,因此flag长度为15字符。
解析加密数组v6:
v61
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
由两个64位数值初始化:
- 第一个值`0xFBF715FA08FD0B0D`分解为小端字节:`0x0D, 0x0B, 0xFD, 0x08, 0xFA, 0x15, 0xF7, 0xFB`。
- 第二个值`0x0F0E011431130DFB`分解为小端字节:`0xFB, 0x0D, 0x13, 0x31, 0x43, 0x11, 0x0E, 0x0F`。
- 合并后`v6`的15字节为:`0x0D, 0x0B, 0xFD, 0x08, 0xFA, 0x15, 0xF7, 0xFB, 0x0D, 0x13, 0x31, 0x14, 0x01, 0x0E, 0x0F`。
3. **逆向加密算法**:
- 加密过程:`(input_char ^ 0xA5) + 55 = v6[i]`。
- 解密过程:`input_char = (v6[i] - 55) ^ 0xA5`。
4. **逐字节解密**:
对`v6`的每个字节应用逆向公式:
- `0x0D → s`, `0x0B → q`, `0xFD → c`, `0x08 → t`, `0xFA → f`, `0x15 → {`, `0xF7 → e`, `0xFB → a`, `0x0D → s`, `0x13 → y`, `0x31 → _`, `0x14 → x`, `0x01 → o`, `0x0E → r`, `0x0F → }`。
**Flag**: `sqctf{easy_xor}`
## 2、春风也有春风愁
```python
hex_str = "7f1f17fd8e51aa660b8036914a4950e8fa8078a2ef33608650fb7a845226f2d1"
data = bytes.fromhex(hex_str)
key = [0x12345678, 0x89ABCDEF, 0xFEDCBA98, 0x76543210]
def decrypt_block(block, key):
v6 = int.from_bytes(block[:4], 'little')
v5 = int.from_bytes(block[4:], 'little')
sum_val = 0xC6EF3720 # Initial sum value
for _ in range(32):
# Update v5
term1 = (v6 + sum_val) & 0xFFFFFFFF
term2 = ((16 * v6) + key[2]) & 0xFFFFFFFF
term3 = ((v6 >> 5) + key[3]) & 0xFFFFFFFF
combined = (term1 ^ term2 ^ term3) & 0xFFFFFFFF
v5 = (v5 - combined) & 0xFFFFFFFF
# Update v6
term1_v6 = (v5 + sum_val) & 0xFFFFFFFF
term2_v6 = ((16 * v5) + key[0]) & 0xFFFFFFFF
term3_v6 = ((v5 >> 5) + key[1]) & 0xFFFFFFFF
combined_v6 = (term1_v6 ^ term2_v6 ^ term3_v6) & 0xFFFFFFFF
v6 = (v6 - combined_v6) & 0xFFFFFFFF
# Update sum_val (equivalent to sum -= delta)
sum_val = (sum_val + 0x61C88647) & 0xFFFFFFFF
return v6.to_bytes(4, 'little') + v5.to_bytes(4, 'little')
decrypted_data = bytearray()
for i in range(0, len(data), 8):
block = data[i:i+8]
decrypted_block = decrypt_block(block, key)
decrypted_data.extend(decrypted_block)
# Process padding
pad_len = decrypted_data[-1]
decrypted_data = decrypted_data[:-pad_len]
# XOR each byte with 22
flag = bytes([b ^ 22 for b in decrypted_data])
print(flag.decode())
3、ezRe
先去upx壳,发现图标是pyinstaller的,所以进行exe逆向pyc逆向代码操作

base64解密即可获得flag
4、慕然回首,那人却在灯火阑珊处
1 |
|

7、天下谁人不识君
1 | s = 'wesyvbniazxchjko1973652048@$+-&*<>' |
8、不劳春风解我忧
发现是xxtea

1 |
|
Misc
1、非人类
频谱图

2、love.host
里面藏了一个压缩包,foremost提取获得flag
sqctf{Sun Ensheng is the most handsome.}
3、Welcome_Sign_in
扫描二维码
6、小巷人家
提示flag是寺庙名字,识图得出

Crypto
1、base?
cyberchef magic

2、密室逃脱的终极挑战
ida秒了

3、别阴阳我了行吗?
阴阳怪气编码

4、玩的挺变态啊清茶哥
猪圈密码

5、简单RSA
factordb分解n

ctfrsatools

6、春风得意马蹄疾
社会主义核心价值观编码
多次解密获得

7、ezCRT
1 | from sympy.ntheory.modular import crt |

8、丢三落四的小I
ctfrsatools

9、字母的轮舞与维吉尼亚的交响曲
爆破压缩包密码,是123456
维吉尼亚密码解密

再拿着疑似flag的内容去解密

10、Common Modulus
1 | import gmpy2 |
SQCTF{06774dcf-b9d1-3c2d-8917-7d2d86b6721c}
11、你的天赋是什么

12、《1789年的密文》
很像的题目:https://ctf.bugku.com/challenges/detail/id/56.html
猜测是转轮加密:
按秘钥提示对字符串调整顺序:
POIUYTREWQASDFGHJKLMNBVCXZ
BXZPMTQOIRVHKLSAFUDGJYCEWN
WSXEDCRFVTGBYHNUJMIKOLPQAZ
EDCRFVTGBYHNUJMIKOLPQAZWSX
RFVGYBHNUJMIKOLPQAZWSXEDCT
AZQWSXEDCRFVTGBYHNUJMIKOLP
LKJHGFDSAQZWXECRVBYTNUIMOP
MNHBGVCFXDRZESWAQPLOKMIJUY
TGBYHNUJMIKOLPQAZWSXEDCRFV
IKOLPQAZWSXEDCRFVTGBYHNUJM
QWXZRJYVKSLPDTMACFNOGIEBHU
ZXCVBNMASDFGHJKLPOIUYTREWQ
YUJIKMOLPQAWSZEXRDCFVGBHNM
VFRCDXESZWAQPLOKMIJNUHGBTG
按密文提示调整每行字符串:
UYTREWQASDFGHJKLMNBVCXZPOI
NBXZPMTQOIRVHKLSAFUDGJYCEW
EDCRFVTGBYHNUJMIKOLPQAZWSX
HNUJMIKOLPQAZWSXEDCRFVTGBY
JMIKOLPQAZWSXEDCTRFVGYBHNU
PAZQWSXEDCRFVTGBYHNUJMIKOL
BYTNUIMOPLKJHGFDSAQZWXECRV
IJUYMNHBGVCFXDRZESWAQPLOKM
UJMIKOLPQAZWSXEDCRFVTGBYHN
OLPQAZWSXEDCRFVTGBYHNUJMIK
MACFNOGIEBHUQWXZRJYVKSLPDT
ASDFGHJKLPOIUYTREWQZXCVBNM
VGBHNMYUJIKMOLPQAWSZEXRDCF
ZWAQPLOKMIJNUHGBTGVFRCDXES
发现倒数第十列为MAKETYSECGREAT,可能符合题意,转为小写maketysecgreat
Pwn
1、浅红欺醉粉,肯信有江梅
nc之后cat flag
2、领取你的小猫娘
变量覆盖
1 | from pwn import * |
3、江南无所有,聊赠一枝春
栈溢出
1 | from pwn import * |
4、借的东风破金锁
1 | from pwn import * |
- 标题: 商丘师范学院第四届网络安全及信息对抗大赛SQCTF(校外赛)WP
- 作者: ljnljn
- 创建于 : 2025-04-13 19:18:00
- 更新于 : 2026-05-25 22:04:46
- 链接: https://ljnljn2005.github.io/2025/04/13/商丘师范学院第四届网络安全及信息对抗大赛SQCTF(校外赛)WP/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。