1. 程式人生 > >hackinglab.cn指令碼關之四

hackinglab.cn指令碼關之四

題目:

提交說明:提交前14個字元即可過關


writeup:

  1. 點選進去後
    _點選之後怎麼沒反應呢?說好的彈窗呢?__

    是一個連結,點選後確實沒啥反應。。可能原始碼中有提示
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html;charset=utf-8">
            <script>
                
                function alert(a){
                	return false;
                }
                document.write=function(){
                	return false;
                }
                function prompt(a){
                	return false;
                }
                var a=function (){
                   var b=function(p,a,c,k,e,r){e=function(c).....//省略了一部分程式碼
                   var d=eval(b);
                   alert("key is first 14 chars"+d);
                }
            </script>
        </head>
        <body>
            <a href="javascript:a();">_點選之後怎麼沒反應呢?說好的彈窗呢?__</a>
        </body>
    </html>

    程式碼審計。發現alert(),prompt()和write()函式都被新函式覆蓋掉了。
  2. 可以發現key在a()函式中,只要把a()的程式碼複製下來,然後換一個頁面開啟web控制檯貼上進去執行就可以得到key
     var a=function (){
                   var b=function(p,a,c,k,e,r){e=function(c){return(c<a?'':.....//省略了一部分程式碼
                   var d=eval(b);
    
    alert("key is first 14 chars"+d.substr(0,14));//由於只要前14個,這裡只取d的前14 }()
    說一下,我改了一下程式碼,程式碼中註釋上有。為什麼要換一個頁面是因為在當前頁面,那三個函式已經被覆蓋了。