예제 #1
0
    def test_mutant_creation(self):
        self.url = URL("http://moth/?a=1&b=2")
        freq = HTTPQSRequest(self.url)

        created_mutants = QSMutant.create_mutants(freq, self.payloads, [], False, self.fuzzer_config)

        expected_dc_lst = [
            DataContainer([("a", ["abc"]), ("b", ["2"])]),
            DataContainer([("a", ["def"]), ("b", ["2"])]),
            DataContainer([("a", ["1"]), ("b", ["abc"])]),
            DataContainer([("a", ["1"]), ("b", ["def"])]),
        ]

        created_dc_lst = [i.get_dc() for i in created_mutants]

        self.assertEqual(created_dc_lst, expected_dc_lst)

        self.assertEqual(created_mutants[0].get_var(), "a")
        self.assertEqual(created_mutants[0].get_var_index(), 0)
        self.assertEqual(created_mutants[0].get_original_value(), "1")
        self.assertEqual(created_mutants[2].get_var(), "b")
        self.assertEqual(created_mutants[2].get_var_index(), 0)
        self.assertEqual(created_mutants[2].get_original_value(), "2")

        self.assertTrue(all(isinstance(m, QSMutant) for m in created_mutants))
예제 #2
0
파일: wordnet.py 프로젝트: Adastra-thw/w3af
 def _generate_qs(self, fuzzable_request):
     '''
     Check the URL query string.
     :return: A list of mutants.
     '''
     query_string = fuzzable_request.get_uri().querystring
     
     for parameter_name in query_string:
         # this for loop was added to address the repeated parameter name issue
         for element_index in xrange(len(query_string[parameter_name])):
             
             orig_content = query_string[parameter_name][element_index]
             wordnet_result = self._search_wn(orig_content)
             
             mutants = QSMutant.create_mutants(fuzzable_request, wordnet_result,
                                               [parameter_name,], False, {})
             
             for mutant in mutants:
                 yield mutant
예제 #3
0
    def _generate_qs(self, fuzzable_request):
        '''
        Check the URL query string.
        :return: A list of mutants.
        '''
        query_string = fuzzable_request.get_uri().querystring

        for parameter_name in query_string:
            # this for loop was added to address the repeated parameter name issue
            for element_index in xrange(len(query_string[parameter_name])):

                orig_content = query_string[parameter_name][element_index]
                wordnet_result = self._search_wn(orig_content)

                mutants = QSMutant.create_mutants(fuzzable_request,
                                                  wordnet_result, [
                                                      parameter_name,
                                                  ], False, {})

                for mutant in mutants:
                    yield mutant
예제 #4
0
    def test_mutant_creation(self):
        self.url = URL('http://moth/?a=1&b=2')
        freq = HTTPQSRequest(self.url)

        created_mutants = QSMutant.create_mutants(freq, self.payloads, [],
                                                  False, self.fuzzer_config)

        expected_dc_lst = [DataContainer([('a', ['abc']), ('b', ['2'])]),
                           DataContainer([('a', ['def']), ('b', ['2'])]),
                           DataContainer([('a', ['1']), ('b', ['abc'])]),
                           DataContainer([('a', ['1']), ('b', ['def'])])]

        created_dc_lst = [i.get_dc() for i in created_mutants]

        self.assertEqual(created_dc_lst, expected_dc_lst)

        self.assertEqual(created_mutants[0].get_var(), 'a')
        self.assertEqual(created_mutants[0].get_var_index(), 0)
        self.assertEqual(created_mutants[0].get_original_value(), '1')
        self.assertEqual(created_mutants[2].get_var(), 'b')
        self.assertEqual(created_mutants[2].get_var_index(), 0)
        self.assertEqual(created_mutants[2].get_original_value(), '2')

        self.assertTrue(all(isinstance(m, QSMutant) for m in created_mutants))