DeepSeek(R1) vs Gpt-o3-mini(-high)

· 2025-02-02 20:38 · 2 阅读

原创 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。

    阅读原文

    跳转微信打开