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

📄 getlinks.pas

📁 domain3.2 SQL注入漏洞扫描 旁注 上传功能 数据库浏览
💻 PAS
字号:
{##########################################
         旁注入侵专用程序 3.0升级版
 ----------------------------------------
  模块:网页扫描 - 分解连接地址
  描述:该单元主要用于从网页中把连接地址分解出来
  作者:2005.3.20日下午  明小子
##########################################}

unit GetLinks;

interface

uses
  Windows, Wininet, SysUtils, Classes;

function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;

implementation

function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;
var
  P, p2: integer;
  Pos1: integer; //查找网址中'/'的位置
  hStr: string; //网址
  StrList, TmpLst: TStrings;
  TempStr, TempStr2: string;
  SmallStr: string;
begin
  Result := '';
  TmpLst := TStringList.Create;
  hStr := StringReplace(URLStr, 'http://', '', [rfIgnoreCase]);
  while Pos('/', hStr) > 1 do
  begin
    Pos1 := Pos('/', hStr);
    hStr := StringReplace(hStr, '/', ' ', [rfIgnoreCase]);
  end;
  URLStr := Trim(Copy(URLStr, 1, Pos1 + Length('http://') - 1)); //得到网址
  StrList := TStringList.Create;
  TempStr := LowerCase(HTMLStr); {全部转换为小写}
  while Pos('href=', TempStr) > 1 do
  begin

    if StrList.Count >= LinkCount then Break;

    P := Pos('href=', TempStr) + 5;
    TempStr := Copy(TempStr, P, Length(TempStr));

    if (TempStr[1] = '''') or (TempStr[1] = '"') then
    begin
      SmallStr := TempStr[1];
      Delete(TempStr, 1, 1);
      P := Pos(SmallStr, TempStr);
      TempStr2 := Copy(TempStr, 1, P - 1);
    end
    else
      TempStr2 := Copy(TempStr, 1, 300);

    if pos('>', TempStr2) > 1 then
    begin
      p := Pos('>', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if Pos('#', TempStr2) > 1 then
    begin
      p := Pos('#', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if pos(' ', TempStr2) > 1 then
    begin
      p := Pos(' ', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if Pos('"', TempStr2) > 1 then
    begin
      p := Pos('"', TempStr2) + 6;
      TempStr2 := Copy(TempStr2, p, Length(TempStr2));
      p := Pos('"', TempStr2);
      TempStr2 := Copy(TempStr2, 1, p - 1);
    end;

    if (Pos('.asp?', TempStr2) > 1) and (Pos('id=', TempStr2) > 1) and (Pos('{$', TempStr2) = 0)
      and (Pos('(', TempStr2) = 0) and (Pos(';', TempStr2) = 0) and (Pos('''', TempStr2) = 0) then
    begin
      if Pos('://', TempStr2) > 1 then
      begin
        if StrList.IndexOf(TempStr2) = -1 then
        begin
          TmpLst.Text := TempStr2;
          if TmpLst.Count = 2 then
            StrList.Add(TmpLst.Strings[0] + TmpLst.Strings[1])
          else
            StrList.Add(TempStr2);
        end;
      end
      else
      begin
        if Copy(TempStr2, 1, 1) = '/' then
        begin
          if StrList.IndexOf(URLStr + TempStr2) = -1 then
          begin
            TmpLst.Text := TempStr2;
            if TmpLst.Count = 2 then
              StrList.Add(URLStr + TmpLst.Strings[0] + TmpLst.Strings[1])
            else
              StrList.Add(URLStr + TempStr2);
          end;
        end
        else
          if StrList.IndexOf(URLStr + '/' + TempStr2) = -1 then
          begin
            TmpLst.Text := TempStr2;
            if TmpLst.Count = 2 then
              StrList.Add(URLStr + '/' + TmpLst.Strings[0] + TmpLst.Strings[1])
            else
              StrList.Add(URLStr + '/' + TempStr2);
          end;
      end;
    end;
  end;
  Result := StrList.Text;
  StrList.Free;
  TmpLst.Free;
end;

{function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;
var
  P, p2: integer;
  Pos1: integer; //查找网址中'/'的位置
  hStr: string; //网址
  StrList: TStrings;
  TempStr, TempStr2: string;
begin
  Result := '';
  hStr := StringReplace(URLStr, 'http://', '', [rfIgnoreCase]);
  while Pos('/', hStr) > 1 do
  begin
    Pos1 := Pos('/', hStr);
    hStr := StringReplace(hStr, '/', ' ', [rfIgnoreCase]);
  end;
  URLStr := Trim(Copy(URLStr, 1, Pos1 + Length('http://') - 1)); //得到网址
  StrList := TStringList.Create;
  TempStr := LowerCase(HTMLStr); //全部转换为小写
  while Pos('href=', TempStr) > 1 do
  begin
  // if StrList.Count >= LinkCount then Break;
    P := Pos('href=', TempStr) + 5;
    TempStr := Copy(TempStr, P, Length(TempStr));

    if (TempStr[1] = '''') or (TempStr[1] = '"') then
      Delete(TempStr, 1, 1);

    P := Pos('''', TempStr);
    p2 := Pos('"', TempStr);

    if p < p2 then
    begin
      TempStr2 := Copy(TempStr, 1, P - 1);
      if Pos('script:', TempStr2) > 1 then
      begin
        p2 := pos(''')', TempStr);
        TempStr2 := Copy(TempStr, p + 1, p2 - Length(TempStr2) - 2);
      end;
    end;

    if p2 < p then
      TempStr2 := Copy(TempStr, 1, P2 - 1);

    if pos('>', TempStr2) > 1 then
    begin
      p := Pos('>', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if Pos('#', TempStr2) > 1 then
    begin
      p := Pos('#', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if pos(' ', TempStr2) > 1 then
    begin
      p := Pos(' ', TempStr2) - 1;
      TempStr2 := Copy(TempStr2, 0, p);
    end;

    if Pos('&quot;', TempStr2) > 1 then
    begin
      p := Pos('&quot;', TempStr2) + 6;
      TempStr2 := Copy(TempStr2, p, Length(TempStr2));
      p := Pos('&quot;', TempStr2);
      TempStr2 := Copy(TempStr2, 1, p - 1);
    end;

    if (Pos('.asp?', TempStr2) > 1) and (Pos('id=', TempStr2) > 1) and (Pos('{$', TempStr2) = 0)
      and (Pos('(', TempStr2) = 0) and (Pos(';', TempStr2) = 0) and (Pos('''', TempStr2) = 0) then
    begin

      if Pos('://', TempStr2) > 1 then
      begin
        if StrList.IndexOf(TempStr2) = -1 then
          StrList.Add(TempStr2);
      end
      else
      begin
        if Copy(TempStr2, 1, 1) = '/' then
        begin
          if StrList.IndexOf(URLStr + TempStr2) = -1 then
            StrList.Add(URLStr + TempStr2);
        end
        else
          if StrList.IndexOf(URLStr + '/' + TempStr2) = -1 then
            StrList.Add(URLStr + '/' + TempStr2);
      end;

    end;
  end;
  Result := StrList.Text;
  StrList.Free;
end;  }

end.

⌨️ 快捷键说明

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