WebInspect:强大的网页程序扫描器

SPI Dynamics’ WebInspect应用程序安全评估工具帮你识别已知和未知的网页层漏洞。它还能检测到Web服务器的配置属性,以及进行常见的网页攻击,例如参数注入、跨网站脚本、目录游走等等。

下载试用版链接:https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-11-201-200^9570_4000_313

>>去网络安全工具百宝箱看看其它安全工具

有趣的WebInspect的加密方法

从去年开始,我开始关注这款优秀的WEB application漏洞扫描软件,这东西除了速度比较慢以外,其它的功能真是不错。我当时研究了一下,被它的用来验证license的那几个dll给吓住了,里面霍然写着一串RSA的key,我就认为这东西除了暴力破解,应该没有其它方法。最近研究了一下RSA算法,正打算用它练练手。结果我仔细研究一下这东西,发现居然出奇的简单,令我真是感到非常不可思议。

WebInspect在你注册后,会给你发一个key文件,这个就是所谓的注册文件,里面有你的注册信息,然后webinspect在启动的时候会把它解密,读出里面的信息,所用的加密函数是hostinfo.crypt,这个函数即用来加密也用来解密,所谓的加密无非就是简单的xor了一下,我也写了一个程序,来调用这个crypt:

  1. #include "stdafx.h"  
  2. #include   
  3. #include   
  4.  
  5. int Crypt (  
  6.               int encrypt,  
  7.               int key,  
  8.               int keysize,  
  9.               int msg,  
  10.               int msgsize);  
  11.  
  12. typedef int(WINAPI* pCrypt) (  
  13.               int encrypt,  
  14.               int key,  
  15.               int keysize,  
  16.               int msg,  
  17.               int msgsize);  
  18.  
  19. void main(int argc, char* argv[])  
  20. {  
  21.        HINSTANCE m_hDll;  
  22.        pCrypt m_crypt;  
  23.        FILE *stream;  
  24.        FILE *fout;  
  25.        int numread;  
  26.        char key[50];  
  27.        char msg[2048];  
  28.        memset((void *)msg,0,2048);  
  29.        m_hDll=LoadLibrary("hostinfo.dll");  
  30.        if (m_hDll < (HINSTANCE) HINSTANCE_ERROR)  
  31.        {  
  32.               m_hDll = NULL;  
  33.               return;  
  34.        }  
  35.        m_crypt = (pCrypt)GetProcAddress(m_hDll, "crypt");  
  36.        if( (stream = fopen( "mmm1.key""r+b" )) != NULL )  //这里是我的原始注册文件  
  37.     {  
  38.               numread = fread( key, sizeofchar ), 50, stream );//头上50字节是key  
  39.               if (numread != -1)   
  40.                      printf("key is : %s",key);  
  41.          
  42.               numread = fread( msg, sizeofchar ), 2048, stream );//剩下的是加密后的内容  
  43.               if (numread != -1){   
  44.                             m_crypt(1,(int )key,50,(int )msg,numread); //参数1的值等于1的,是解密  
  45.                             if( (fout = fopen( "mmm1.txt""w+t" )) != NULL )  
  46.                             {  
  47.                                    fwrite(key,sizeof(char),50,fout);                          
  48.                                    fwrite(msg,sizeof(char),numread,fout);  
  49.                                    fclose(fout);  
  50.                             }  
  51.                             printf("msg is : %s",msg);  
  52.               }  
  53.               fclose(stream);  
  54.                 
  55.        }  
  56.  
  57.        return ;  

#p#

运行一下,我们得到了mmm1.txt,它的内容如下:

  1. //下面是文件内容  
  2.  
  3. 33383131352E31313131363839383135                  SPI License File  
  4.  
  5. Company=xxx ltd.  
  6.  
  7. Contact=xxx xxx-  
  8.  
  9. Address1=xxx#  
  10.  
  11. Address2=  
  12.  
  13. City=xxx  
  14.  
  15. State=  
  16.  
  17. PostalCode=xxx  
  18.  
  19. Country=CHN  
  20.  
  21. Phone=xxxx  
  22.  
  23. Fax=  
  24.  
  25. EMail=  
  26.  
  27. [Start IP Range]  
  28.  
  29. 216.183.127.201 216.183.127.201  
  30.  
  31. [End IP Range]  
  32.  
  33. MaxPageCount=0  
  34.  
  35. MaxIssueCount=0  
  36.  
  37. ValidFrom=5/8/2004  
  38.  
  39. ValidTo=5/23/2007  
  40.  
  41. RequireHTTPSFeedback=True  
  42.  
  43. VerificationURL=https://download.spidynamics.com/spiXMLVulDB/spiXMLVulDB.asp  
  44.  
  45. MaxABS=20  
  46.  
  47. MaxGlobal=10  
  48.  
  49. IPCount=1  
  50.  
  51. IPScanCount=0  
  52.  
  53. Product=  
  54.  
  55. ProductionKey=True  
  56.  
  57. MacIDs=  
  58.  
  59. IPScanned=216.183.127.201:19  
  60.  
  61. End SPI License File  
  62. //结束 

#p#

需要注意的是”Start IP Range”,这里修改一下,比如把216.183.127.201 216.183.127.201改成 0.0.0.0 255.255.255.255,还有个地方要改一下IPCount,把1改成一个较大的数,这个是用来控制你扫描的IP总数的。做了这两下修改(需要注意的是这个是unix格式的文本文件,windows下存的时候要小心),我们就要把它加密回去,呵呵,同样用hostinfo.crypt(这是crypt吗?应该叫encode才对):

  1. #include "stdafx.h"  
  2. #include   
  3. #include   
  4.  
  5. int Crypt (  
  6.               int encrypt,  
  7.               int key,  
  8.               int keysize,  
  9.               int msg,  
  10.               int msgsize);  
  11.  
  12. typedef int(WINAPI* pCrypt) (  
  13.               int encrypt,  
  14.               int key,  
  15.               int keysize,  
  16.               int msg,  
  17.               int msgsize);  
  18.  
  19. void main(int argc, char* argv[])  
  20. {  
  21.        HINSTANCE m_hDll;  
  22.        pCrypt m_crypt;  
  23.        FILE *stream;  
  24.        FILE *fout;  
  25.        int numread;  
  26.        char key[50];  
  27.        char msg[2048];  
  28.        memset((void *)msg,0,2048);  
  29.        m_hDll=LoadLibrary("hostinfo.dll");  
  30.        if (m_hDll < (HINSTANCE) HINSTANCE_ERROR)  
  31.        {  
  32.               m_hDll = NULL;  
  33.               return;  
  34.        }  
  35.        m_crypt = (pCrypt)GetProcAddress(m_hDll, "crypt");  
  36.        if( (stream = fopen( "mmm1.txt""r+b" )) != NULL )  
  37.     {  
  38.               numread = fread( key, sizeofchar ), 50, stream );  
  39.               if (numread != -1)   
  40.                      printf("key is : %s",key);  
  41.          
  42.               numread = fread( msg, sizeofchar ), 2048, stream );  
  43.               if (numread != -1){   
  44.                             m_crypt(0,(int )key,50,(int )msg,numread);// //参数1的值等于0的,是加密  
  45.                             if( (fout = fopen( "mmm2.key""w+b" )) != NULL )  
  46.                             {  
  47.                                    fwrite(key,sizeof(char),50,fout);                          
  48.                                    fwrite(msg,sizeof(char),numread,fout);  
  49.                                    fclose(fout);  
  50.                             }  
  51.                               
  52.               }  
  53.               fclose(stream);  
  54.                 
  55.        }  
  56.        return ;  

这样我们得到了mmm2.key,放到webinspect里验证一下,果然没问题,但是改过的key在线升级的时候会无效,所以正确的办法是申请一个试用的key,在线把程序升级好,再用这个修改后的key.

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/148302.html<

(0)
管理的头像管理
上一篇2025-03-12 02:25
下一篇 2025-03-12 02:26

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注