ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### **插件主要结构说明** &nbsp; &nbsp; &nbsp;&nbsp;本软件的插件为方便入门者开发,采用C#进行开发。作者的开发环境是`Visual Studio 2019`。需要安全`C#`相关组件,请自行搜索安装方法。 ### **HTTP插件开发主要内容说明** 插件开发需要完成`URL`、`body`、`headers`以及`Other`(其他信息),四个部分即可构建完成POC。 完成的依据为所有的**POC**或者**EXP**都是HTTP报文,而HTTP报文结构一般都是前三种信息。 如下图: ![](https://img.kancloud.cn/69/c8/69c8488753087c36ac36365229e41cca_542x412.png) 所以,只需要四步即可完成POC的开发。 那么!开始吧! ### **1、创建类库** &nbsp; &nbsp; &nbsp;&nbsp;这里的类库是指的能够生成C#Dll文件,后文将不再特殊说明。 &nbsp; &nbsp; &nbsp;&nbsp;创建类库图如下: ![](https://img.kancloud.cn/e8/f8/e8f816f2226cf304b0475fd4370b88ca_989x577.png) ### **2、文件命名** &nbsp; &nbsp; &nbsp;&nbsp;文件命名无特定命名规则,但也应该以通俗易懂为目标。 ![](https://img.kancloud.cn/70/92/709259b70d8d1765c2210d198f529e55_1024x680.png) &nbsp; &nbsp; &nbsp;&nbsp;为保证兼容性,请再此选择`Framework 4` 版本 ### **3、类命名** &nbsp; &nbsp; &nbsp;&nbsp;类应该以目标框架名称或者web漏洞CVE或者CNVD名称。首字母大写。名称中出现多个单词的应该所有首字母都大写。 如 ``` public class CNVD_2018_01089 { .......... } ``` ### **4、主要包含的方法** //--------------------POC按钮需要设置的方法--------------- `Poc_GetUrl` 方法应该存在,返回类型为`Dictionary<string, string>` 。当点击`POC`时会返回目标`url`。 `Poc_GetHeaders` 方法必须存在,返回类型为`Dictionary<string,string>`。是`EXP`按钮时触发,用于构建`header`。 `Poc_GetBody` 方法必须存在,返回类型为`Dictionary<string, string>`。是`POC`按钮使用时触发,用于构建`body`。 `Poc_GetOther` 方法必须存在,返回类型为`Dictionary<string, string>`。是`POC`按钮使用时触发,用于访问非报文结 //---------------------EXP按钮需要设置的方法-------------- `Exp_GetUrl` 方法必须存在,返回类型为`Dictionary<string, string>`。当点击`EXP`时会返回目标`url`。 `Exp_GetHeaders` 方法必须存在,返回类型为`Dictionary<string,string>`。是`POC`按钮时触发,用于构建`header`。 `Exp_GetBody` 方法必须存在,返回类型为`Dictionary<string, string>`。是`EXP`按钮使用时触发,用于构建`body`。 构数据。 `Exp_GetOther` 方法必须存在,返回类型为`Dictionary<string, string>`。是`EXP`按钮使用时触发,用于访问非报文结构数据。 //---------------------公共方法--------------------------------- `Info` 方法必须存在,返回类型为`string`。在加载时返回`info`信息到主程序信息框栏,推荐读取主要属性`info`。 ### **插件的生成** 使用`生成`->`生成解决方案`产生dll文件 ![](https://img.kancloud.cn/11/12/1112c932df75dbcfa211a09fc0878566_826x452.png) dll文件位于项目文件下`bin/debug`目录下。 其中生成的dll文件就是插件文件。 ### **主体向插件传输的数据格式(高阶开发数据说明)** 在主体向插件传输的数据格式是`Dictionary<string,Dictionary<string,string>>` 结构大致如下: ![](https://img.kancloud.cn/cc/ff/ccff901845ffec516b5cc70b99f4164f_804x762.png) 该结构数据会依次传递到`XXX_GetUrl`、`XXX_GetHeaders`、`XXX_GetBody`、`GetBody`