jtpereyda / boofuzz

A fork and successor of the Sulley Fuzzing Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How can I implement this callback function to resend node A when the callback function fails to receive a response?

tr4v3ler opened this issue · comments

sess.connect(s_get("A"), s_get("B"), callback=check_response)
Before fuzzing node B, I want to make sure that I receive a response of node A. If check_response failed to receive a response, I want to continue sending node A until I receive a response. How can I implement this callback function?

Sometimes the target may not respond to request A, but request B will still be sent. Since the target has a state machine and will not process request B, this test case is wasted. In this case, how to ensure that the current test case can continue to be used in the next round? I noticed that there are several related variables in the callback, but I don't know which one to modify.

session.fuzz_node.mutant_index
session.fuzz_node.mutant.mutant_index
session.total_mutant_index

Sorry for the super late reponse @tr4v3ler

I don't think this is currently possible with multiple requests.
You could try decrementing one or multiple of the index variables, but that wouldn't stop boofuzz from sending request B. If it works at all, it could repeat the whole test case. But then again we might run into troubles with test case ID duplication in the database. So it's probably not going to work that way.

Are you planning on fuzzing request A, too? If not you could manually send that request in a pre send callback. There you could make sure that you receive a response before returning from the callback to continue fuzzing request B.

We also have two related issues about retrying failed test cases: #124 #201
Those features would be really neat to have...

I think with a retry mechanism as suggested in #201 this problem would be solved.
If not feel free to reopen @tr4v3ler.