挖网络程序初级教程.docx
文本预览下载声明
序本文描述了一个用Peach挖掘漏洞的全过程,目的在于给想要学习的人一个总体上的理解。所用目标程序特别设计,有明显缺陷,因此不作为日后漏洞挖掘难度的参考。特别提醒,正因此程序有明显漏洞,所以不能在网络情况下,运行在自己的主机上,这样可能会被人拿到控制。实验环境:XP-SP3虚拟机+ peach运行环境研究目标程序本教程选取的是Vulnserver,一个自行设计有脆弱点的应用程序,通常用来练习漏洞利用技术。这是一个基本的服务器程序,接受TCP连接,并接受任意输入,这些输入可能会导致缓冲区溢出和SHE重写等漏洞。Vulnserver默认开启的端口号为9999,我们用netcat程序给Vulnserver发送数据,来观察它接受怎样的输入。Vulnserver程序和netcat程序在教程文件夹里都有。首先让我们先打开Vulnserver程序。先不管Vulnserver程序,再打开netcat程序,连接9999端口,并输入HELP查询可以输入的命令。不管这些命令是什么意思,任选一个输入,观察一下Vulnserver的反应,比如我们选择HTER 1234。观察Vulnserver,可知道它确实接收到了数据。至此我们已经找到了目标程序的接受的数据格式,所以以HTER [hter_value]为数据模型,编写peach pit模板。编写peach pit模板复制一个模板peach pit文件,对它进行修改是一个聪明的做法。然后就是对它的几个模块进行分析和改写。2.1.DataModel我们要进行变异的数据为命令行“HTER [可选值]”,HTER和之后的一个空格是必要格式,不能对此进行变异,还要在命令后加一个换行符,所以数据模块应为:DataModel name=DataHTERString value=HTER mutable=false token=true /String value= /String value=\r\n mutable=false token=true //DataModel请注意,HTER后有一个空格。StateModelVulnserver是一个服务器程序,我们理解它的收发数据的过程为,先对发送请求的程序(测试过程中,这个程序为peach fuzzer)回应一个数据DataResponse,然后接受一个数据DataHTER(即我们进行模糊测试的数据),最后再回应一个数据DataResponse,所以还需要有一个DataModel为DataReSponse的,不对它进行格式定义,因为我们要用测试的是DataHTER数据块。所以,StateModel应为:StateModel name=StateHTER initialState=InitialState name=InitialAction type=inputDataModel ref=DataResponse //ActionAction type=outputDataModel ref=DataHTER //ActionAction type=inputDataModel ref=DataResponse //Action/State/StateModelDataResponse为:DataModel name=DataResponse String value= //DataModelAgent对于Agent的配置,本教程先不去深究每一个元素和属性的意义,在此需要配置的是Windbg的路径和启动目标程序的命令行。Agent name=RemoteAgent location=tcp://127.0.0.1:9001Monitor name=Debugger class=WindowsDebuggerParam name=CommandLine value=C:\Program Files\vulnserver\vulnserver.exe /Param name=WinDbgPath value=C:\Program Files\Debugging Tools for Windows (x86) //Monitor/AgentTestTest是测试的配置,它需要指定Agent(因为一个Peach pit文件里可能不止一个Agent),指定StateModel(原因同Agent),配置Publisher和Logger。Publisher是数据交换的接口,Logger主要配置日志路径,默认在当前工作空间。Test name=TestHTERAgent ref=RemoteAgent /StateModel ref=StateHTER/Publisher class=TcpClientParam name=Host value=127.0.0.1 /
显示全部