예제 #1
0
    def test_sf_payload(self):
        with self.assertRaises(spickle.UnpicklingError):
            def nasty(module, function, *args):
                return pickle.dumps(new.classobj(function, (), {
                    '__getinitargs__': lambda self, arg=args: arg,
                    '__module__': module
                })())

            t = nasty("subprocess", "Popen", ("/bin/ls", "/tmp"))
            spickle.loads(t)
예제 #2
0
파일: tests.py 프로젝트: bwall/spickle
    def test_sf_payload(self):
        with self.assertRaises(spickle.UnpicklingError):

            def nasty(module, function, *args):
                return pickle.dumps(
                    new.classobj(
                        function, (), {
                            '__getinitargs__': lambda self, arg=args: arg,
                            '__module__': module
                        })())

            t = nasty("subprocess", "Popen", ("/bin/ls", "/tmp"))
            spickle.loads(t)
예제 #3
0
파일: tests.py 프로젝트: bwall/spickle
 def test_corrupt_object_dict_update(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(
             spickle.loads(
                 "cspickle\n_EmptyClass\n(}(S'__dict__'\ncrequests\ncodes\npcache\n(}(S'update'\ncsubprocess\ncall\ndtbdtb(gcache\n(Vsh\nNu}tb."
             ))
예제 #4
0
파일: tests.py 프로젝트: bwall/spickle
 def test_set_state_abuse(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(
             "cspickle\nsys\n(}(S'__setstate__'\ncos\nsystem\ndtbS'ls'\nb.")
예제 #5
0
 def test_integer(self):
     self.assertEqual(5, spickle.loads(pickle.dumps(5)))
예제 #6
0
파일: tests.py 프로젝트: bwall/spickle
 def test_functionality_remains(self):
     c = pickle.dumps(Macavity())
     self.assertEqual(spickle.loads(c).__class__, Macavity().__class__)
예제 #7
0
파일: tests.py 프로젝트: bwall/spickle
 def test_dictionary(self):
     d = {"a": 1, "b": 2, "c": 3}
     self.assertEqual(d, spickle.loads(pickle.dumps(d)))
예제 #8
0
파일: tests.py 프로젝트: bwall/spickle
 def test_tuple(self):
     self.assertEqual((1, 3, ("hello", 5.0)),
                      spickle.loads(pickle.dumps((1, 3, ("hello", 5.0)))))
예제 #9
0
 def test_basic_attack(self):
     c = pickle.dumps(RunBinSh())
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(c)
예제 #10
0
 def test_dictionary(self):
     d = {"a": 1, "b": 2, "c": 3}
     self.assertEqual(d, spickle.loads(pickle.dumps(d)))
예제 #11
0
 def test_object_with_dict(self):
     d = HasDict()
     self.assertEqual(d.d, spickle.loads(pickle.dumps(d)).d)
예제 #12
0
 def test_list(self):
     l = [1, 2, 3, 4, 5, "hello", (9, 8, 3)]
     self.assertEqual(l, spickle.loads(pickle.dumps(l)))
예제 #13
0
 def test_tuple(self):
     self.assertEqual((1, 3, ("hello", 5.0)), spickle.loads(pickle.dumps((1, 3, ("hello", 5.0)))))
예제 #14
0
 def test_string(self):
     self.assertEqual("ohai ;)", spickle.loads(pickle.dumps("ohai ;)")))
예제 #15
0
파일: tests.py 프로젝트: bwall/spickle
 def test_integer(self):
     self.assertEqual(5, spickle.loads(pickle.dumps(5)))
예제 #16
0
 def test_functionality_remains(self):
     c = pickle.dumps(Macavity())
     self.assertEqual(spickle.loads(c).__class__, Macavity().__class__)
예제 #17
0
파일: tests.py 프로젝트: bwall/spickle
 def test_string(self):
     self.assertEqual("ohai ;)", spickle.loads(pickle.dumps("ohai ;)")))
예제 #18
0
 def test_legitimate_global_assignment(self):
     spickle.loads(spickle.dumps(LegitimateGlobalAssignment()))
예제 #19
0
파일: tests.py 프로젝트: bwall/spickle
 def test_list(self):
     l = [1, 2, 3, 4, 5, "hello", (9, 8, 3)]
     self.assertEqual(l, spickle.loads(pickle.dumps(l)))
예제 #20
0
 def test_global_assignment_attack(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads("cspickle\n__dict__\nS'mloads'\ncos\nsystem\nsJ;ls;.")
예제 #21
0
파일: tests.py 프로젝트: bwall/spickle
 def test_object_with_dict(self):
     d = HasDict()
     self.assertEqual(d.d, spickle.loads(pickle.dumps(d)).d)
예제 #22
0
 def test_set_state_abuse(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads("cspickle\nsys\n(}(S'__setstate__'\ncos\nsystem\ndtbS'ls'\nb.")
예제 #23
0
파일: tests.py 프로젝트: bwall/spickle
 def test_basic_attack(self):
     c = pickle.dumps(RunBinSh())
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(c)
예제 #24
0
파일: tests.py 프로젝트: bwall/spickle
 def test_global_assignment_attack(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(
             "cspickle\n__dict__\nS'mloads'\ncos\nsystem\nsJ;ls;.")
예제 #25
0
파일: tests.py 프로젝트: bwall/spickle
 def test_legitimate_global_assignment(self):
     spickle.loads(spickle.dumps(LegitimateGlobalAssignment()))
예제 #26
0
 def test_corrupt_object_dict_update(self):
     with self.assertRaises(spickle.UnpicklingError):
         spickle.loads(spickle.loads("cspickle\n_EmptyClass\n(}(S'__dict__'\ncrequests\ncodes\npcache\n(}(S'update'\ncsubprocess\ncall\ndtbdtb(gcache\n(Vsh\nNu}tb."))