乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      php – 如何演示二階SQL注入?

       印度阿三17 2019-06-13

      所以我一直在嘗試復(fù)制二階SQL注入.這是我準(zhǔn)備的兩個(gè)基于php的網(wǎng)站的示例模板.我們把它稱為選民登記表.用戶可以注冊,然后您可以檢查您是否是注冊選民.

      insert.php

      <?php
      
      $db_selected = mysql_select_db('canada',$conn);
      if (!db_selected)
          die("can't use mysql: ". mysql_error());
      
      $sql_statement = "INSERT into canada (UserID,FirstName,LastName,Age,State,Town)
                          values ('".mysql_real_escape_string($_REQUEST["UserID"])."',
                          '".mysql_real_escape_string($_REQUEST["FirstName"])."',
                          '".mysql_real_escape_string($_REQUEST["LastName"])."',
                          ".intval($_REQUEST["Age"]).",
                          '".mysql_real_escape_string($_REQUEST["State"])."',
                          '".mysql_real_escape_string($_REQUEST["Town"])."')";
      
      echo "You ran the sql query=".$sql_statement."<br/>";
      $qry = mysql_query($sql_statement,$conn) || die (mysql_error());
      mysql_close($conn);
      Echo "Data inserted successfully";
      }
      ?>
      

      select.php

      <?php
      
      
      $db_selected = mysql_select_db('canada', $conn);
      if(!db_selected)
          die('Can\'t use mysql:' . mysql_error());
      $sql = "SELECT * FROM canada WHERE UserID='".addslashes($_POST["UserID"])."'";
      echo "You ran the sql query=".$sql."<br/>";
      $result = mysql_query($sql,$conn);
      $row=mysql_fetch_row($result);
      
      $sql1 = "SELECT * FROM canada WHERE FirstName = '".$row[1]."'";
      echo "The web application ran the sql query internally=" .$sql1. "<br/>";
      $result1 = mysql_query($sql1, $conn);
      $row1 = mysql_fetch_row($result1);
      
      mysql_close($conn);
      echo "<br><b><center>Database Output</center></b><br><br>";
      
      echo "<br>$row1[1] $row1[2] , you are a voter! <br>";
      
      echo "<b>VoterID: $row[0]</b><br>First Name: $row[1]<br>Last Name: $row[2]
          <br>Age: $row[3]<br>Town: $row[4]<br>State: $row[5]<br><hr><br>";
      }
      ?>
      

      因此,我故意使這個(gè)易受攻擊,以顯示二階SQL注入如何工作,用戶可以在第一個(gè)名稱部分輸入代碼(我目前卡住的地方,我嘗試了很多不同的方式,但似乎我無法得到它可以做任何事情).
      然后當(dāng)一個(gè)人想要激活他在第一個(gè)名字部分中插入的代碼時(shí),他只需輸入用戶ID并插入代碼即可.

      例如:
      我將在insert.php頁面中輸入:
      userid = 17

      firstname =(我需要在這里注入一些東西)

      lastname = ..

      年齡= ..

      鎮(zhèn)= ..

      州= ..

      然后,當(dāng)我檢查我的詳細(xì)信息并輸入17時(shí),將激活注入的SQL腳本.
      我可以舉幾個(gè)例子來說明我可以通過這種方式展示哪種漏洞?

      解決方法:

      使用名字:

      ' OR 1 OR '
      

      這將在第二個(gè)SQL中生成一個(gè)where子句

      WHERE FirstName = ” OR 1 OR ”

      因此,結(jié)果將是表格中的第一條記錄.

      通過添加LIMIT子句,您可以從表中提取所有行:

      ‘ OR 1 ORDER BY UserID ASC LIMIT 0, 1 —

      顯然它一次只能提取1行,所以你需要重復(fù)這一行并在LIMIT中增加0.此示例使用注釋 – 終止剩余的SQL,否則會導(dǎo)致查詢失敗,因?yàn)樗鼤贚IMIT之后添加單引號.

      以上是一個(gè)簡單的例子,更復(fù)雜的攻擊是使用UNION SELECT,它可以通過使用information_schema來訪問整個(gè)數(shù)據(jù)庫.

      您還在其中一個(gè)查詢中使用addslashes().這不像mysql_real_escape_string()那樣安全,反過來:使用其中任何一個(gè)轉(zhuǎn)義引號都不如使用預(yù)處理語句或參數(shù)化查詢(例如PDO或MySQLi)那樣安全.

      來源:http://www./content-2-245051.html

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多