⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 define_unit.pas

📁 sql inject HDSI3--delphi.rar
💻 PAS
字号:
unit define_Unit;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,ThreadHttpGet;

  function GetURLContent(URL: string): string;     //获取所有页面内容(html)
  function GetURLMsg(URL: string): string;         //获取页面出错信息(报错信息)
  function GetURLCode(URL: string): integer;      //获取页面的server返回头信息
  function GetURLMsgBool(str_url:string):boolean; // 获取页面出错信息(报错信息)
  function SQLINJECTIONUrlToHex(SQLINJECTIONURL:String;SqlType:Integer):String;//转换字符为urlecode字符
  procedure SaveToLogFile(sPath:string; strLog: string);//日记保存
var
  url: string;          //url地址
  FDbName:string;       //当前数据库名
  
  const  //用户权限   ,add by jiaozhu
  str_Power: array[0..6] of string = (
    'sysadmin', 'dbcreator', 'diskadmin',
    'processadmin', 'serveradmin',
    'setupadmin', 'securityadmin');
implementation
uses
  main_unit;

//获取页面内容
function GetURLContent(URL: string): string;
var
    IdGetObj:TThreadHttpGet;

begin
  try

    Result := '';
    IdGetObj:=TThreadHttpGet.Create(true);
    IdGetObj.TimeOut:=TimeOut;//timeout30秒
    IdGetObj.FURL:=URL;
    IdGetObj.Success:=false;
    IdGetObj.Resume;
    while not IdGetObj.Success do
    begin
        application.ProcessMessages;
        sleep(50);
    end;
    Result :=IdGetObj.sContent;
  finally

       IdGetObj.Free;
       IdGetObj:=nil;
  end;
end;

//*****************************************************************
//函数:判断某个页面是否存在
function GetURLMsg(URL: string): string;
    function GetResultStr(str: string): string;
    var
        iStart, iEnd: integer;
        ss: string;
    begin
        iStart := pos('^', str);
        if iStart > 0 then
        begin
            ss := copy(str, iStart + 1, length(str) - iStart);
            iEnd := pos('^', ss);
            if iEnd > 0 then
            begin
              ss := copy(ss, 1, iEnd - 1);
            end;
        end;
        if ss = '' then
          Result := '未知'
        else Result := ss;
    end;
var

    ss:string;
begin
    ss:=GetURLContent(URL);
    result:=GetResultStr(ss);
end;
//*****************************************************************
//函数:判断某个页面的
function GetURLCode(URL: string): integer;
var
    IdGetObj:TThreadHttpGetHead;

begin
  try

    Result := 0;
    IdGetObj:=TThreadHttpGetHead.Create(true);
    IdGetObj.TimeOut:=TimeOut;//timeout30秒
    IdGetObj.FURL:=URL;
    IdGetObj.Success:=false;
    IdGetObj.Resume;
    while not IdGetObj.Success do
    begin
        application.ProcessMessages;
        sleep(100);
    end;
    Result :=IdGetObj.iCode;
  finally
       IdGetObj.Free;
       IdGetObj:=nil;
  end;
end;

//转换字符为urlecode字符; SQLINJECTIONURL--注入的sql语句,SqlType--类型,1是SQL SERVER格式的转换,0是URL格式的转换

Function SQLINJECTIONUrlToHex(SQLINJECTIONURL:String;SqlType:Integer):String;
Var  TempString:String;
     i:Integer;
     S:String;
Begin
     TempString := '';
     For i:=1 To Length(SQLINJECTIONURL) Do
       Begin
         IF SqlType = 1 Then S:=IntToHex(Ord(SQLINJECTIONURL[i]),2)+'00';
         IF SqlType = 0 Then S:='%'+IntToHex(Ord(SQLINJECTIONURL[i]),2);
         TempString:=TempString+S;
       End;
     //IF SqlType = 1 Then Result:='DECLARE @S NVARCHAR(4000);SET @S=CAST(0x'+TempString+' AS NVARCHAR(4000));EXEC(@S);--';
     IF SqlType = 1 Then Result:='0x'+TempString;
     IF SqlType = 0 Then Result:=TempString;
End;


procedure SaveToLogFile(sPath:string; strLog: string);
var
  logFile: string;
  f: TextFile;
begin
  try
    logFile := sPath  + FormatDateTime('yyyy', Now) + '.txt';
    AssignFile(f, logFile);
    if FileExists(logFile) then
      Append(f)
    else
      Rewrite(f);
    Writeln(f, '[' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Now) + '] '+strLog);
    Flush(f);
    CloseFile(f);
  except
  end;
end;

//*****************************************************************
//函数:获取某个页面的返回出错数据
function GetURLMsgBool(str_url:string):boolean;
var
  ss:string;
  //memo:TMemo;
  i:integer;

begin
    result:=false;
    try
      //memo:=TMemo.Create(nil);
      //memo.Lines.Add(GetURLContent(str_url));
      ss:=GetURLContent(str_url);
      //showmessage(inttostr(pos('varchar',ss)));
      //showmessage(inttostr(pos('nvarchar',ss)));
      //showmessage(inttostr(pos('+user+',ss)));
      //showmessage(inttostr(pos('int',ss)));
      if ((pos('varchar',ss)>0) or (pos('nvarchar',ss)>0)) and (pos('int',ss)>0) and(pos('db_name()',ss)=0) then
     //if (define_unit.GetURLMsg(str_url)<>'未知') then// and (pos('varchar',memo.Text)>0)  then
        result:=true
      else
        result:=false;

    finally
      //memo.Free;
    end;
end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -