我有两个应用程序,分别是Sender.exe和Receiver.exe。我必须对发送方到接收方之间发送的tcp数据包进行模糊测试。

我是Peach Fuzzer的初学者。您能否举一个如何模糊TCP数据包的示例示例(Peach Pit)。我无法在互联网上找到样本。

最佳答案

给定的代码可能会帮助您。此xml PIT代码将使用GET请求头将GET请求发送到localhost

GET https://localhost HTTP/1.1
HOST : http://localhost
content-length: {some value depend ur body}

{body}


只需将此xml放在文件中,然后./peach -1 --debug pathtofile / file.xml

<?xml version="1.0" encoding="utf-8"?>
<Peach xmlns="http://peachfuzzer.com/2012/Peach" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://peachfuzzer.com/2012/Peach /peach/peach.xsd">
<DataModel name="Headermodel">
    <String name="Header" />
    <String value=": "/>
    <String name="Value" />
    <String value="\r\n" />
</DataModel>


<DataModel name="HttpRequest">
 <!-- The HTTP reqest line: GET http://foo.coi HTTP/l.O -->
    <Block name= "RequestLine">
        <String name="Method"/>
        <String value=" "/>
        <String name="RequestUri"/>
        <String value=" "/>
        <String name="HttpVersion"/>
        <String value="\r\n"/>
    </Block>

    <Block name="HeaderHost" ref="Headermodel">
        <String name="Header" value="Host" />
    </Block>

    <Block name="HeaderContentLength" ref="Headermodel">
        <String name="Header" value="Content-Length" />
        <!-- <String name="Header" value="Content-Length" />  -->
        <String name="Value">
            <Relation type="size" of="httpBody.content"/>
        </String>
    </Block>

    <!-- <String value="\r\n"/>  -->

    <Block name="httpBody">
        <String name="content" value="length is 12" />
    </Block>
</DataModel>


 <Data name="HttpGet" >
    <Field name="RequestLine.Method" value="GET"/>
    <Field name="RequestLine.RequestUri" value="http://localhost" />
    <Field name="RequestLine.HttpVersion" value="HTTP/1.1"/>
    <Field name="HeaderHost.Value" value="http://localhost"/>
    <Field name="httpBody.content" value="\r\nfuzz"/>
 </Data>

 <Data name="HttpOptions" ref="HttpGet">
    <Field name="RequestLine.Method" value="OPTIONS"/>
    <Field name="RequestLine.RequestUri" value="*" />
    <Field name="HeaderHost.Value" value="" />
 </Data>

 <StateModel name="State1" initialState="Initial">
    <State name="Initial">
        <Action type="output">
            <DataModel ref="HttpRequest"/>
            <Data ref="HttpGet"/>
        </Action>
    </State>
</StateModel>

<StateModel name="State2" initialState="Initial">
    <State name="Initial">
        <Action type="output">
            <DataModel ref="HttpRequest" />
            <Data ref="HttpOptions" />
        </Action>
    </State>
</StateModel>

<Test name="Default">
        <StateModel ref="State1"/>

        <Publisher class="TcpClient">
                <Param name="Host" value="localhost" />
                <Param name="Port" value="80" />
        </Publisher>
        <Logger class="File">
            <Param name="Path" value="logs"/>
        </Logger>
</Test>

08-04 14:57