欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    1 背景

    京東SRC( )收錄大量外部白帽子提交的sql注入漏洞,漏洞發生的原因多為sql語句拼接和使用不當導致。

    2 手工檢測2.1 前置知識

    .0以上版本中存在一個重要的系統數據庫,通過此數據庫可訪問mysql中存在的數據庫名、表名、字段名等元數據。中有三個表成為了sql注入構造的關鍵。

    1).:2).).

    SQL注入常用SQL函數

    2.2 注入類型2.2.1 參數類型分類2.2.2 注入方式分類2.3 手動檢測步驟(字符型注入為例)

     // sqli vuln code
                Statement statement = con.createStatement();
                String sql = "select * from users where username = '" + username + "'";
                logger.info(sql);
                ResultSet rs = statement.executeQuery(sql);
    // fix code 如果要使用原始jdbc,請采用預編譯執行
                String sql = "select * from users where username = ?";
                PreparedStatement st = con.prepareStatement(sql);

    使用未預編譯原始jdbc作為democ添加數據到數據庫,注意此demo中sql語句參數采用單引號閉合。

    2.3.1 確定注入點

    對于字符類型注入,通常先嘗試單引號,判斷單引號是否被拼接到SQL語句中。推薦使用瀏覽器擴展作為手工測試工具。

    c添加數據到數據庫_c 存儲圖片到數據庫中_2010已有mfc工程添加bcg界面庫

    正常頁面應該顯示如下:

    admin后加單引號導致無信息回顯,原因是后端sql執行報錯,說明引號被拼接至SQL語句中

    select * from users where username = 'admin'  #正常sql
    select * from users where username = 'admin'' #admin'被帶入sql執行導致報錯無法顯示信息

    2.3.2 判斷字段數

    mysql中使用order by 進行排序,不僅可以是字段名也可以是字段序號。所以可以用來判斷表中字段數,order by 超過字段個數的數字就會報錯。

    判斷字段數

    當order by 超過4時會報錯,所以此表共四個字段。

    后端所執行的sql語句

    select * from users where username = 'admin' order by 1-- '

    此處我們將原本的值admin替換為admin’ order by 1 —+,其中admin后的單引號用于閉合原本sql語句中的前引號,—+用于注釋sql語句中的后引號。—后的+號主要作用是提供一個空格,sql語句單行注釋后需有空格,+會被解碼為空格。

    2.3.3 確定回顯位置

    主要用于定位后端sql字段在前端顯示的位置,采用聯合查詢的方式確定。注意聯合查詢前后字段需一致,這也就是我們為什么做第二步的原因。

    通過下圖可知,后端查詢并回顯的字段位置為2,3位。

    c 存儲圖片到數據庫中_c添加數據到數據庫_2010已有mfc工程添加bcg界面庫

    聯合查詢后的字段可以隨意c添加數據到數據庫,本次采用的是數字1到4直觀方便。

    2.3.4 利用庫實現注入

    ()函數用于將查詢結果拼接為字符串。

    3 自動化檢測3.1 使用

    兼容和,可以自動化檢測各類注入和幾乎所有數據庫類型。

    3.1.1 常用命令

    -u  可能存在注入的url鏈接
    -r讀取http數據包
    --data 指定post數據
    --cookie 指定cookie
    --headers 指定http頭 如采用token認證的情況下
    --threads 指定線程數
    --dbms 指定后端的數據庫
    

    2010已有mfc工程添加bcg界面庫_c添加數據到數據庫_c 存儲圖片到數據庫中

    --os 指定后端的操作系統類型 --current-user 當前用戶 --users 所有用戶 --is-dba 是否是dba --sql-shell 交互式的sqlshell -p指定可能存在注入點的參數 --dbs 窮舉系統存在的數據庫 -D指定數據庫 --tables 窮舉存在的表 -T指定表 --column 窮舉字段 -C指定字段 --dump dump數據

    直接檢測

    其中—用于指定,—batch 自動化執行,—dbms指定數據庫類型

    檢測結果

    讀取系統中存在數據庫

    c添加數據到數據庫_c 存儲圖片到數據庫中_2010已有mfc工程添加bcg界面庫

    —dbs讀取當前用戶下的數據庫

    讀取指定庫下的表

    -D —

    dump users表數據

    -D -T users —dump

    4 進階4.1 注入1)$錯誤使用導致注入

    //采用#不會導致sql注入,mybatis會使用預編譯執行
        @Select("select * from users where username = #{username}")
        User findByUserName(@Param("username") String username);
    //采用$作為入參可導致sql注入
        @Select("select * from users where username = '${username}'")
        List findByUserNameVuln01(@Param("username") String username);

    2)模糊查詢拼接

    //錯誤寫法
      
     //正確寫法
     

    3)order by 注入

    order by 后若使用#{}會導致報錯,因為#{}默認添加引號會導致找不到字段從而報錯。

       //錯誤寫法 
    
    //正確寫法 id指字段id 此表字段共四個 所以id為1-4
        

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有