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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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