1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        PHP漏洞全解-SQL注入攻擊

        發布時間:  2012/5/18 18:56:01

        SQL注入攻擊(SQL Injection),是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程序沒有對提交的數據經過檢查,那么就會造成sql注入攻擊。

        SQL注入攻擊的一般步驟:

        1、攻擊者訪問有SQL注入漏洞的站點,尋找注入點

        2、攻擊者構造注入語句,注入語句和程序中的SQL語句結合生成新的sql語句

        3、新的sql語句被提交到數據庫中執行 處理

        4、數據庫執行了新的SQL語句,引發SQL注入攻擊

        實例

        數據庫

         

        1. CREATE TABLE `postmessage` (  
        2. `id` int(11) NOT NULL auto_increment,  
        3. `subject` varchar(60) NOT NULL default ”,  
        4. `namevarchar(40) NOT NULL default ”,  
        5. `email` varchar(25) NOT NULL default ”,  
        6. `question` mediumtext NOT NULL,  
        7. `postdate` datetime NOT NULL default ’0000-00-00 00:00:00′,  
        8. PRIMARY KEY (`id`)  
        9. ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT=’運用者的留言’ AUTO_INCREMENT=69 ;  
        10. grant all privileges on ch3.* to ‘sectop’@localhost identified by ’123456′;  
        11. //add.php 插入留言  
        12. //list.php 留言列表  
        13. //show.php 顯示留言  

        頁面 http://www.netsos.com.cn/show.php?id=71 可能存在注入點,我們來測試

        http://www.netsos.com.cn/show.php?id=71 and 1=1

        返回頁面

         

        一次查詢到記錄,一次沒有,我們來看看源碼

        //show.php 12-15行

        // 執行mysql查詢語句

        $query = "select * from postmessage where id = ".$_GET["id"];

        $result = mysql_query($query)

        or die("執行ySQL查詢語句失。" . mysql_error());

        參數id傳遞進來后,和前面的字符串結合的sql語句放入數據庫執行 查詢

        提交 and 1=1,語句變成select * from postmessage where id = 71 and 1=1 這語句前值后值都為真,and以后也為真,返回查詢到的數據

        提交 and 1=2,語句變成select * from postmessage where id = 71 and 1=2 這語句前值為真,后值為假,and以后為假,查詢不到任何數據

        正常的SQL查詢,經過我們構造的語句之后,形成了SQL注入攻擊。通過這個注入點,我們還可以進一步拿到權限,比如說運用 union讀取管理密碼,讀取數據庫信息,或者用mysql的load_file,into outfile等函數進一步滲透。

        防范方法

        整型參數:

        運用 intval函數將數據轉換成整數

        函數原型

        int intval(mixed var, int base)

        var是要轉換成整形的變量

        base,可選,是基礎數,默認是10

        浮點型參數:

        運用 floatval或doubleval函數分別轉換單精度和雙精度浮點型參數

        函數原型

        int floatval(mixed var)

        var是要轉換的變量

          int doubleval(mixed var)

        var是要轉換的變量

        字符型參數:

        運用 addslashes函數來將單引號“’”轉換成“\’”,雙引號“"”轉換成“\"”,反斜杠“\”轉換成“\\”,NULL字符加上反斜杠“\”

        函數原型

        string addslashes (string str)

        str是要檢查的字符串

        那么剛才出現的代碼漏洞,我們可以這樣修補

        // 執行mysql查詢語句

        $query = "select * from postmessage where id = ".intval($_GET["id"]);

        $result = mysql_query($query)

        or die("執行ySQL查詢語句失。" . mysql_error());

         

        如果是字符型,先判斷magic_quotes_gpc能無法 為On,當不為On的時候運用 addslashes轉義特殊字符

         

        1. if(get_magic_quotes_gpc())  
        2. {  
        3.     $var = $_GET["var"];  
        4. }  
        5.  else  
        6.  {  
        7.   $var = addslashes($_GET["var"]);  

         

        再次測試,漏洞已經修補


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          1
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线