DeepSeek(R1) vs Gpt-o3-mini(-high)
原创 XiaoC 2025-02-02 20:38 北京
昨儿看到 gpt 放出了 o3-mini 和 o3-mini-high 模型,用两年前问 gpt4 的漏洞 demo 丢给 dsr1 和 o3 测了下。
问题:下面是一个 web 程序,其中可能存在一些漏洞,找出所有的漏洞,和触发漏洞的路径,给出 poc
from flask import Flask
from flask import request
from jinja2.sandbox import SandboxedEnvironment
from jinja2 import Environment
from jinja2 import Template
import uuid
app = Flask(__name__)
class MyTemplate(Template):
def xiaoc(self):
print("xiaoc called of MyTemplate")
class MyEnvironment(Environment):
def xiaoc(self):
print("xiaoc called of MyEnvironment")
class MySandboxedEnvironment(SandboxedEnvironment):
def xiaoc(self):
print("xiaoc called of SandboxedEnvironment")
@app.route('/test1', methods=['GET'])
def test1():
tpl = request.args.get("tpl")
template = Template(tpl)
return template.render()
@app.route('/test11', methods=['GET'])
def test11():
tpl = request.args.get("tpl")
return Template(tpl).render()
@app.route('/test2', methods=['GET'])
def test2():
tpl = request.args.get("tpl")
env = Environment()
template = env.from_string(tpl)
return template.render()
@app.route('/test21', methods=['GET'])
def test21():
tpl = request.args.get("tpl")
template = Environment().from_string(tpl)
return template.render()
@app.route('/test22', methods=['GET'])
def test22():
tpl = request.args.get("tpl")
env = Environment()
return env.from_string(tpl).render()
@app.route('/test23', methods=['GET'])
def test23():
tpl = request.args.get("tpl")
return Environment().from_string(tpl).render()
@app.route('/test3', methods=['GET'])
def test3():
tpl = request.args.get("tpl")
env = SandboxedEnvironment()
template = env.from_string(tpl)
return template.render()
@app.route('/test4', methods=['GET'])
def test4():
tpl = request.args.get("tpl")
kwargs = {}
kwargs.update({"uuid": uuid})
env = SandboxedEnvironment()
template = env.from_string(tpl)
return template.render(kwargs)
@app.route('/test5', methods=['GET'])
def test5():
tpl = request.args.get("tpl")
return MyTemplate(tpl).render()
@app.route('/test6', methods=['GET'])
def test6():
tpl = request.args.get("tpl")
return MyEnvironment().from_string(tpl).render()
@app.route('/test7', methods=['GET'])
def test7():
tpl = request.args.get("tpl")
kwargs = {}
kwargs.update({"uuid": uuid})
return MySandboxedEnvironment().from_string(tpl).render(kwargs)
if __name__ == '__main__':
app.run()
o3-mini-high 的表现
能根据是否用沙箱分类 1*、2*、5、6 和 3、4、7

在沙箱场景中,能识别出 uuid 变量的关键作用,但是在怎么利用 uuid 这个点,依然会陷入混乱,甚至觉得 test3 也能 bypass

DeepSeek(R1) 的表现
很惊艳,直接上截图。
准确分类,无沙箱场景表现正常

精确识别 uuid 变量的作用,甚至给了有无回显两种方式

最后的总结,排除了唯一无漏洞路由 test3

结论
只从这个测试结果看,dsr1 秒了 gpt 当前公开的最强模型 o3-mini*。因此至少,dsr1 不弱于 gpt 当前的公开模型,可以停止给 gpt 续费了 xdm。




